在类中形成要由main调用的对象。Java代码
我正在尝试创建一个模拟12面模具的阵列。使用for-each语句,当我在单个类中执行时,它将起作用。然而,我不得不从另一个班级去拜访它。是否有一种方法可以在公共类中创建对象(4个12面骰子),使用for-each语句,然后在main中调用并掷骰子在类中形成要由main调用的对象。Java代码,java,arrays,class,enumeration,Java,Arrays,Class,Enumeration,我正在尝试创建一个模拟12面模具的阵列。使用for-each语句,当我在单个类中执行时,它将起作用。然而,我不得不从另一个班级去拜访它。是否有一种方法可以在公共类中创建对象(4个12面骰子),使用for-each语句,然后在main中调用并掷骰子 package gofirst; public class DodecaDice { int[] a = new int[13]; enum dieA{1, 8, 11, 14, 19, 22, 27, 30, 35, 38,
package gofirst;
public class DodecaDice {
int[] a = new int[13];
enum dieA{1, 8, 11, 14, 19, 22, 27, 30, 35, 38, 41, 48}
for (DieA nextDieA: DieA.values()){
a[0++]=nextDieA;
}
}
我不知道你想要什么,但也许是这样的。您需要使用“for each”吗 虽然我只展示了一个骰子,但你可以在主方法中制作四个骰子。。。或者把它滚四次
import java.util.Random;
public class Dice {
private int[] a = {1, 8, 11, 14, 19, 22, 27, 30, 35, 38, 41, 48};
public Dice() {
//do nothing for now
}
public int roll() {
Random rand = new Random();
int key = rand.nextInt(12) + 1;
return a[key];
}
public static void main(String args[]) {
Dice d = new Dice();
System.out.println(d.roll());
}
}
我不完全确定你想要实现什么,但如果我做的是这样的事情,我可能会从一个
模具的基本概念开始,它的核心功能
public interface Die {
public int getMinium();
public int getMaximum();
public int roll();
}
然后我会创建一个抽象版
来填充最常见、最基本的功能,这样我就不需要一直重复我自己了
public abstract class AbstractDie implements Die {
private final int minimum;
private final int maximum;
public AbstractDie(int minimum, int maximum) {
this.minimum= minimum;
this.maximum = maximum;
}
@Override
public int getMinimum() {
return minimum;
}
@Override
public int getMaximum() {
return maximum;
}
@Override
public int roll() {
return getMinimum() + (int)(Math.random() * getMaximum());
}
}
最后是一些实现,例如
public class TwelveSidedDie extends AbstractDie {
public TwelveSidedDie() {
super(1, 12);
}
}
Die[] dice = new Die[] {new TwelveSidedDie(), new TwelveSidedDie(), new TwelveSidedDie(), new TwelveSidedDie()};
int sum = 0;
for (Die die : dice) {
int roll = die.roll();
System.out.println(roll);
sum += roll;
}
System.out.println("Total: " + sum);
这将允许我在需要时使用该类,例如
public class TwelveSidedDie extends AbstractDie {
public TwelveSidedDie() {
super(1, 12);
}
}
Die[] dice = new Die[] {new TwelveSidedDie(), new TwelveSidedDie(), new TwelveSidedDie(), new TwelveSidedDie()};
int sum = 0;
for (Die die : dice) {
int roll = die.roll();
System.out.println(roll);
sum += roll;
}
System.out.println("Total: " + sum);
应该注意的是,通过使用类似于
Die die = new TwelveSidedDie();
int rolls = 4;
for (int roll = 0; roll < rolls; roll++) {
int result = die.roll();
System.out.println(result);
sum += result;
}
System.out.println("Sum: " + sum);
这将允许您传入任何Die
的实现,并根据需要自动滚动它们
例如…如果For循环不在方法中,这是如何编译的?还有什么。。。是[0++]吗?不管怎样,这就是我的建议:创建一个公共方法rollDie,返回滚动值。我不知道从哪里开始解释,你违反了书中的每一条规则……你有没有尝试过将dieA
作为它自己的一个单独的类?类Die,然后创建尽可能多的你想知道的,我现在是一个糟糕的程序员。谢谢你抽出时间。我似乎从你们那里得到的是,我不能用for语句在单独的类中创建对象。然后在我的主课上调用数组?哇,这比我尝试的角度要优雅得多。我将把你的代码弄得一团糟,看看能从中学到什么。非常感谢!谢谢,我已经完成了这个节目。然而,我确实阅读了你所有的代码,从中学习了我能学到的一切。我真的很感谢你的帮助。有时候,再多的阅读表格和课本也比不上一个直接的例子!不,有时候你不得不跳起来,把事情搞砸;)
public class TwelveSidedDie extends AbstractDie {
public TwelveSidedDie() {
super(1, 12);
}
}
Die[] dice = new Die[] {new TwelveSidedDie(), new TwelveSidedDie(), new TwelveSidedDie(), new TwelveSidedDie()};
int sum = 0;
for (Die die : dice) {
int roll = die.roll();
System.out.println(roll);
sum += roll;
}
System.out.println("Total: " + sum);