好的,所以,我对java很新 我正在设计一个计分计算器,用于我长期搁置的项目。不过,我想知道如何做到这一点,就我所知。
该程序应该要求掷骰子,并将其添加到每个玩家的前一卷 我假设while循环可以实现这一点,但每次循环都会将变量重置为当前滚动。因此,我不能得到一个......
以下是一些代码:
static int players;
static String p1;
static String p2;
static String p3;
static String p4;
static int maxScore;
static int roll1;
static int roll2;
static int roll3;
static int roll4;
static int total1;
static int total2;
static int total3;
static int total4;
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter number of players: ");
players=keyboard.nextInt();
System.out.print("Enter Maximum Score: ");
maxScore=keyboard.nextInt();
if(players==2){ //will add more ifs when i get the code right
System.out.println("Please enter players names.");
System.out.print("Player 1: ");
p1=keyboard.next();
System.out.print("Player 2: ");
p2=keyboard.next();
System.out.println(p1 + "\t \t " + p2 + "\n"
+ "_______ \t _______ \n" ); //displays scorecard look with players names
{
while (total1 < maxScore && total2<maxScore) {
//scorecard quits when maxScore is reached by either player
int roll;
total1=(roll+roll1);
System.out.print("");
roll=keyboard.nextInt(); //asks for current roll
System.out.print("\n"+"_____"+"\n");
System.out.print(roll+"+"+"\n"+roll1+"\n"+"_____"+"\n"+(roll+roll1)+"\n");
/*i want this to display total score + last roll and then
*total it again on the next line*/
roll1=roll;
}
答案 0 :(得分:1)
如果我正确地阅读了您的问题,那么解决方案就是
total1+=(roll+roll1);
与
相同total1= total1+(roll+roll1);
您只是不将卷添加到总价值中!
另外,作为一个注意事项,将实例变量设置为public和static并不是一个好主意。如果它们是私有的而不是静态的会更好。例如
private int players;
希望答案有所帮助
答案 1 :(得分:1)
Java中编程进度的一些提示:
变量roll
没有用处。 roll1
等等,将为每位玩家存储最后一次滚动。
如果可能,请初始化变量。应该避免依赖默认值,因为它可能会在您学习时带来问题(NullPointerException
会在某个时间访问您)。
在你的循环中,你有total1=(roll+roll1);
。这是错的。您的变量total1
,roll
,roll1
在程序到达此点时未初始化。因为它们是整数,所以它们(静默地)被初始化为0,因此此时total1
得到0,这并没有多大成果。在此之后,您继续检索卷。尝试相反的方式,首先是滚动,然后加起来。
您提到您是Java的新手,但是,在将来的某个时候,您可能会考虑使用数组实现相同的程序。你会注意到它为你节省了很多你现在写的重复代码。
总结并转换为代码指南(适用于2位玩家):
public class MyScoreCalculator {
static String p1 = "";
static String p2 = "";
static int maxScore = 0;
static int roll1 = 0;
static int roll2 = 0;
static int total1 = 0;
static int total2 = 0;
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
// Dialogue to get data...
// Display scorecard look with players names
while (total1 < maxScore && total2 < maxScore) {
//scorecard quits when maxScore is reached by either player
roll1 = keyboard.nextInt(); // ask for current roll
System.out.println(total1 + "+");
System.out.println(roll1);
System.out.println("_____");
System.out.println(roll1 + total1);
total1 = total1 + roll1;
// Do the same for next player.
}
}
}
答案 2 :(得分:0)
您的total1计算应为total1 += roll
,并在新的滚动输入后发生。此外,如果roll1代表最后一个卷,则相应地命名该变量,它更具可读性。
由于您有很多玩家,请尝试抽象概念并将输入与“会计”分开。例如,您可以创建一个PlayerScore类,其中包含总计和最后一个输入(以及播放器的名称),其中包含一个方法,该方法负责添加和保存最后一个输入,以及对信息进行漂亮打印。然后,您可以拥有一个PlayerScore的集合并对其进行迭代,询问当前的滚动并更新信息。