Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-带有If语句的Main方法打印顺序错误_Java - Fatal编程技术网

Java-带有If语句的Main方法打印顺序错误

Java-带有If语句的Main方法打印顺序错误,java,Java,如果这是任何类型的复制品,我会提前通知,但我找不到任何解决我具体问题的方法 这是我的节目: import java.util.Random; 公营嘉年华{ 公共静态void main(字符串[]args){ 整数计数=0; int=0; 对于(int i=0;i=35)| |(总和=4){ 对于(int i=0;i

如果这是任何类型的复制品,我会提前通知,但我找不到任何解决我具体问题的方法

这是我的节目:

import java.util.Random;
公营嘉年华{
公共静态void main(字符串[]args){
整数计数=0;
int=0;
对于(int i=0;i<101;i++){
系统输出打印项次(“滚动”+计数);
计数=计数+1;
int die1=(DIERROLL(6));
int die2=(dieRoll(20));
int die3=(DIERROLL(8));
int die4=(DIERROLL(4));
int die5=(dieRoll(12));
整数和=die1+die2+die3+die4+die5;
System.out.println(“总计:“+sum+”\n”);
如果((总和>=35)| |(总和<20)){
System.out.println(“玩家赢!\n”);
wins=wins+1;
}
如果(计数=100){
//问题领域
System.out.printf(“在100次掷骰后,玩家总共赢了%d次!\n”,赢);
}
}//循环结束
}//端干管
公共静态内部滚动(内部侧){
int num=0;
int roll=0;
随机rng=新随机();
如果(边>=4){
对于(int i=0;i<1;i++){
滚动=下一轮(侧面)+1;
System.out.println(“卷为:“+Roll”);
num=num+roll;
}//循环结束
}//如果结束
返回num;
}//结束方法

}//最终类
您的问题是循环有101次迭代,从0到100。
所以在99号之后,你的100个骰子掷完,然后你再掷一次。只需将循环从0更改为99(对不起,伙计们,我犯了一个愚蠢的逻辑错误。正如Jesper和Calvin p所建议的,这是解决我问题的方法。我只需将问题区域放在for循环之后。我想我必须将其保持在循环内。谢谢大家的帮助

import java.util.Random;

public class CarnivalGame
{
public static void main(String[] args)
{
int count = 0;
int wins = 0;
for (int i = 0; i < 100; i++)
{
System.out.println("Roll " + (i + 1));
count = count + 1;
int die1=(dieRoll(6));
int die2=(dieRoll(20));
int die3=(dieRoll(8));
int die4=(dieRoll(4));
int die5=(dieRoll(12));
int sum = die1+die2+die3+die4+die5;
System.out.println("Total:    " +  sum + "\n");

if ((sum >= 35) || (sum < 20)){
System.out.println("Player wins!\n");
wins = wins + 1;
}
if (count == 100){
//FIXED PROBLEM
System.out.printf("After 100 rolls, the player has won for a total of %d times!\n", wins); 
}
}//end for loop
}//end main

public static int dieRoll(int sides)
{ 
   int num = 0;
   int roll = 0;
   Random  rng = new Random(); 
   if(sides >=4) 
      { 
      for(int i = 0; i < 1; i++)
         { 
         roll = rng.nextInt(sides)+1;
         System.out.println("Roll is:  " + roll);
         num = num + roll; 
   }//end for loop
   }//end if
return num;
}//end method   

}//end class
import java.util.Random;
公营嘉年华
{
公共静态void main(字符串[]args)
{
整数计数=0;
int=0;
对于(int i=0;i<100;i++)
{
系统输出println(“滚动”+(i+1));
计数=计数+1;
int die1=(DIERROLL(6));
int die2=(dieRoll(20));
int die3=(DIERROLL(8));
int die4=(DIERROLL(4));
int die5=(dieRoll(12));
整数和=die1+die2+die3+die4+die5;
System.out.println(“总计:“+sum+”\n”);
如果((总和>=35)| |(总和<20)){
System.out.println(“玩家赢!\n”);
wins=wins+1;
}
如果(计数=100){
//固定问题
System.out.printf(“在100次掷骰后,玩家总共赢了%d次!\n”,赢);
}
}//循环结束
}//端干管
公共静态内部压模辊(内部侧)
{ 
int num=0;
int roll=0;
随机rng=新随机();
如果(侧面>=4)
{ 
对于(int i=0;i<1;i++)
{ 
滚动=下一轮(侧面)+1;
System.out.println(“卷为:“+Roll”);
num=num+roll;
}//循环结束
}//如果结束
返回num;
}//结束方法
}//末级

您的变量
count
始终比迭代器变量
i
早一步,因为您在循环中很早就增加了它。因此,当
i
仍然是99时,您将达到count==100


在计数增加之前移动输出,或者在循环结束时增加输出。

正确缩进代码,以便查看ifs、fors等的嵌套方式!将代码放在for循环外打印结果。现在它在for循环内。好的,对不起,我有一个不缩进的坏习惯!@nukacola7如果您在Eclipse上,请使用
Ctrl+i
正确缩进。请注意,Java不是Javascript-因此不应指定为Javascript片段。@JonSkeet ok感谢您的编辑!我会记住这一点,下次我也会意识到这一点。哈哈。您应该使用它,但仍然会将结果移动到循环后。然后您可以消除
计数变量。编辑:哦,然后将
System.out.println(“Roll”+count);
更改为
System.out.println(“Roll”+(i+1));
这与Christian W的答案一致吗?他说的话会纠正你说的话吗?或多或少-确保在输出后你再也不会进入循环也会纠正这个问题;-)请记住投票选出对你有帮助的答案,并接受对你帮助最大的答案。