Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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 循环结束后未打印出的字符串_Java_For Loop - Fatal编程技术网

Java 循环结束后未打印出的字符串

Java 循环结束后未打印出的字符串,java,for-loop,Java,For Loop,因此,在浏览了这里和其他网站上已经提出的问题后,我想我会尝试一下 我正在做一个练习,希望您用Java设置一个程序,输入10个数字,计算平均值(平均值)和标准偏差,然后输出它们 我的问题是,当我运行程序,然后输入我想要的10个值并点击回车键时,什么都没有发生。由于某些原因,循环后出现的系统打印输出未被执行。循环中的println不是必需的,只是为了表明在循环运行时正确计算了值,并且它们是正确的 我的目标是将myValues分配给的当前值添加到sum1,并将myValues的平方添加到sqrdSum

因此,在浏览了这里和其他网站上已经提出的问题后,我想我会尝试一下

我正在做一个练习,希望您用Java设置一个程序,输入10个数字,计算平均值(平均值)和标准偏差,然后输出它们

我的问题是,当我运行程序,然后输入我想要的10个值并点击回车键时,什么都没有发生。由于某些原因,循环后出现的系统打印输出未被执行。循环中的println不是必需的,只是为了表明在循环运行时正确计算了值,并且它们是正确的

我的目标是将myValues分配给的当前值添加到sum1,并将myValues的平方添加到sqrdSum。sqrdSum只是一个变量,我将输入值的平方和作为变量,这样以后在程序中对标准偏差的计算会更清晰

正如预期的那样,我并不希望为自己做这件事,只是希望得到一些关于如何调整代码的建议,以便在循环执行之后出现的println。我希望这与我的逻辑有关,但我想不出来。希望这是我曾经错过的简单的事情

谢谢

到目前为止,我已经使用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);

    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的原始问题无关。我将添加一个免责声明。