循环程序中的逻辑错误

时间:2016-06-03 03:02:45

标签: java loops

import java.util.Scanner; 
public class Unit2Err2{ 
  public static void main( String[] args ){ 
    Scanner scan = new Scanner(System.in);                    
    double sum = 0;                                             
    double count = 0;
    double in = scan.nextDouble();                                                                      
    while (scan.nextDouble()!= 0){                                           
      sum = sum + in;                                           
      count++;                                  
    } 
    double avg= sum/count;                       
    System.out.println("The average is " +avg); 
  }                                                     
} 

输入:5 4 3 0 6 4 3

特别是我没有任何错误,我确实有错误说: 无与伦比的类型:boolean和int。 但是我修复了它,我现在的问题是平均值应该是4而不是5.我想知道错误在哪里,我已经尝试重新安排它,所以我的平均值达到4,但后来我经常最终与上面相同的错误。

3 个答案:

答案 0 :(得分:1)

# \\W+ to look for non-word characters (i.e. [^[:alnum:]_])
# between the ">" and "<" that enclose the text 
choice <- which(grepl(">\\W+john\\W+<", choices, perl = TRUE))

result[[choice]]$getElementAttribute("outerHTML")[[1]]
#[1] "<div class=\"lvl3\" id=\"n471\">\n      john\n    </div>"

当您第一次使用import java.util.Scanner; public class Unit2Err2{ public static void main( String[] args ){ Scanner scan = new Scanner(System.in); double sum = 0; double count = 0; double in ; while ( (in = scan.nextDouble())!= 0){ sum = sum + in; count++; } double avg= sum/count; System.out.println("The average is " +avg); } } nextDouble时,它已从终端读取值。

答案 1 :(得分:0)

您需要在每次迭代时重新分配in

while ((in = scan.nextDouble()) != 0){                                           
    sum += in;                                           
    count++;                                  
} 

答案 2 :(得分:0)

程序在看到“scan.nextDouble()”语句时停止并等待输入。连续两个将读取5和4,而不对值进行任何操作。

当前代码将第一个输入5分配给变量in。之后,in中永远不会赋值。因此每次循环迭代都会添加5。