Java 循环结束后未打印出的字符串
因此,在浏览了这里和其他网站上已经提出的问题后,我想我会尝试一下 我正在做一个练习,希望您用Java设置一个程序,输入10个数字,计算平均值(平均值)和标准偏差,然后输出它们 我的问题是,当我运行程序,然后输入我想要的10个值并点击回车键时,什么都没有发生。由于某些原因,循环后出现的系统打印输出未被执行。循环中的println不是必需的,只是为了表明在循环运行时正确计算了值,并且它们是正确的 我的目标是将myValues分配给的当前值添加到sum1,并将myValues的平方添加到sqrdSum。sqrdSum只是一个变量,我将输入值的平方和作为变量,这样以后在程序中对标准偏差的计算会更清晰 正如预期的那样,我并不希望为自己做这件事,只是希望得到一些关于如何调整代码的建议,以便在循环执行之后出现的println。我希望这与我的逻辑有关,但我想不出来。希望这是我曾经错过的简单的事情 谢谢 到目前为止,我已经使用for循环进行了设置:Java 循环结束后未打印出的字符串,java,for-loop,Java,For Loop,因此,在浏览了这里和其他网站上已经提出的问题后,我想我会尝试一下 我正在做一个练习,希望您用Java设置一个程序,输入10个数字,计算平均值(平均值)和标准偏差,然后输出它们 我的问题是,当我运行程序,然后输入我想要的10个值并点击回车键时,什么都没有发生。由于某些原因,循环后出现的系统打印输出未被执行。循环中的println不是必需的,只是为了表明在循环运行时正确计算了值,并且它们是正确的 我的目标是将myValues分配给的当前值添加到sum1,并将myValues的平方添加到sqrdSum
int n = 10;
double sum1 = 0.0;
double sqrdSum = 0.0;
double mean1 = sum1 / n;
double std1 = Math.pow((sqrdSum - (Math.pow(sum1, 2) / n)) / (n-1), 0.5);
Scanner input1 = new Scanner(System.in);
System.out.println("Enter 10 numbers: ");
double myValues = input1.nextDouble();
for (int count = 0; count <= n; count++) {
sum1 += myValues;
sqrdSum += Math.pow(myValues, 2);
System.out.println(sum1 + " " + sqrdSum); //this is to test to see if the loop is calculating correctly.
myValues = input1.nextDouble();
}
System.out.print("The mean of your values is: " + mean1);
System.out.print("The standard deviation of your values is: " + std1);
//Test values: 1 2 3 4.5 5.6 6 7 8 9 10
//Should give a mean of 5.61
//std of 2.99794
int n=10;
双sum1=0.0;
双平方和=0.0;
双平均值1=sum1/n;
double std1=数学功率((sqrdSum-(数学功率(sum1,2)/n))/(n-1),0.5);
扫描仪输入1=新扫描仪(System.in);
System.out.println(“输入10个数字:”);
double myValues=input1.nextDouble();
对于(int count=0;count问题是,input1.nextDouble()
阻塞直到输入下一个数字。您输入了10个数字,但您需要11个输入,因为您有这一行
double myValues = input1.nextDouble();
它执行一次又一次
myValues = input1.nextDouble();
在循环内执行11次。只需在循环开始时移动它:
Scanner input1 = new Scanner(System.in);
System.out.println("Enter 10 numbers: ");
double myValues = 0;
for (int count = 0; count < n; count++) {
double myValues = input1.nextDouble();
sum1 += myValues;
sqrdSum += Math.pow(myValues, 2);
System.out.println(sum1 + " " + sqrdSum); //this is to test to see if the loop is calculating correctly.
}
Scanner input1=新的扫描仪(System.in);
System.out.println(“输入10个数字:”);
双MyValue=0;
对于(int count=0;count
正如Brian所指出的,您也有一个“一关一关”错误。您从0开始,但计数到10,这就形成了11个循环周期。更改只需更改计数,虽然给出的答案确实解决了您的原始问题,但您的代码也存在另一个问题。您无法获得正确的平均值,因为您是如何启动它的,然后不进行设置的到for循环之后的任何值
int n = 10;
double sum1 = 0.0;
double sqrdSum = 0.0;
double mean1 = sum1 / n;
double std1 = Math.pow((sqrdSum - (Math.pow(sum1, 2) / n)) / (n-1), 0.5);
上面几行应该是
int n = 10;
double sum1 = 0.0;
double sqrdSum = 0.0;
double mean1 = 0.0;
double std1 = 0.0;
然后在for循环之后,您应该计算mean1
和std1
,如下代码所示
int n = 10;
double sum1 = 0.0;
double sqrdSum = 0.0;
double mean1 = 0.0;
double std1 = 0.0;
Scanner input1 = new Scanner(System.in);
System.out.println("Enter 10 numbers: ");
double myValues = 0.0;
for (int count = 0; count < n; count++) {
myValues = input1.nextDouble();
sum1 += myValues;
sqrdSum += Math.pow(myValues, 2);
System.out.println(sum1 + " " + sqrdSum); //this is to test to see if the loop is calculating correctly.
}
mean1 = sum1 / n;
std1 = Math.pow((sqrdSum - (Math.pow(sum1, 2) / n)) / (n-1), 0.5);
System.out.print("The mean of your values is: " + mean1);
System.out.print("The standard deviation of your values is: " + std1);
//Test values: 1 2 3 4.5 5.6 6 7 8 9 10
//Should give a mean of 5.61
//std of 2.99794
int n=10;
双sum1=0.0;
双平方和=0.0;
双平均值1=0.0;
双std1=0.0;
扫描仪输入1=新扫描仪(System.in);
System.out.println(“输入10个数字:”);
双MyValue=0.0;
对于(int count=0;count
按照编写方法,您总共需要输入12个数字(先输入一个,然后在循环中输入11个)为了完成这个循环。为什么你要将mean1
设置为等于sum1/n;
?当你启动mean1
时,sum1=0
,0除以0等于0以外的任何数字。当你启动std1
时也会问这个问题啊!谢谢Jonny,你的评论让我大开眼界。我不得不将mean1设置为sum1/n呃循环,所以sum1的值是最新的数字。谢谢!没关系…我知道了。循环结束后,我必须更新mean1和std1的值,使用那些变量的原始值0.0,这是完全正确的,这也不是问题的主题;-)但是现在原始问题解决了,你的回答同样有用!虽然他已经自己弄明白了,正如下面的评论所示。@Carstenhofmann哈哈,是的,我在写这篇文章的时候,认为这与OP的原始问题无关。我将添加一个免责声明。