【问题标题】:ArrayList<Integer>, trying to find average of entered valuesArrayList<Integer>,试图找到输入值的平均值
【发布时间】:2014-11-26 14:06:10
【问题描述】:

试图找出作为输入输入到列表中的整数的平均值。 无法弄清楚如何,我收到一个错误,说它在其中找不到符号 在行总计 = 总计 + in;

import java.util.*;
import java.io.*;
import java.lang.*;
import type.lib.*;

public class Lists

{
    public static void main(String[] args)
    {
        PrintStream print = new PrintStream(System.out);
        Scanner scan = new Scanner(System.in);
        List<Integer> bag = new ArrayList<Integer>();
        print.println("Enter your integers");
        print.println("(Negative=sentinel)");
        int total = 0;
        int count = 0;

        for (int in = scan.nextInt(); in > 0; in = scan.nextInt());
        {
            total = total + in;
            count = count + 1;
        }

        double x = total / count;
        print.println("The average is: " + x);
    }
}

另外,有没有一种简单的方法可以输出高于平均值的数字并用逗号分隔?

【问题讨论】:

  • 读取编译错误并在错误位置周围寻找错误,而不是直接去SO:/
  • 另外,有没有一种简单的方法可以用逗号显示高于平均水平的数字?

标签: java for-loop arraylist


【解决方案1】:

去掉for循环后的分号:

for (int in = scan.nextInt(); in > 0; in = scan.nextInt())

没有为编译器定义in 的原因是分号会通过充当for 循环的空体来取消其定义范围。

【讨论】:

  • 我要补充一点,x 不包含正确的值,因为total/count 被计算为整数运算并且其结果被转换为双精度。该行应更改为double x = (double)total / count;
【解决方案2】:

从循环中删除 ;

for (int in = scan.nextInt(); in > 0; in = scan.nextInt());

改为

for (int in = scan.nextInt(); in > 0; in = scan.nextInt())

【讨论】:

    【解决方案3】:

    你不应该有 ;在for循环之后...

    for (int in = scan.nextInt(); in > 0; in = scan.nextInt())//remove ; here
    

    【讨论】:

      【解决方案4】:

      for循环的语法是:

      for(initialization; Boolean_expression; update)
      {
         //Statements
      }
      

      您已添加分号;,因此它成为for 循环的空正文。您必须删除代码中for (int in = scan.nextInt(); in &gt; 0; in = scan.nextInt()) 行之后的分号

      修改后的代码:我提供修改后的代码。

      public class Lists
      
      {
          public static void main(String[] args)
          {
              PrintStream print = new PrintStream(System.out);
              Scanner scan = new Scanner(System.in);
              List<Integer> bag = new ArrayList<Integer>();
              print.println("Enter your integers");
              print.println("(Negative=sentinel)");
              int total = 0;
              int count = 0;
      
              for (int in = scan.nextInt(); in > 0; in = scan.nextInt()){
                  total = total + in;
                  count = count + 1;
              }
      
              double x = total / count;
              print.println("The average is: " + x);
          }
      }
      

      【讨论】:

        【解决方案5】:

        上面的代码需要做两处改动:

        1.您需要删除for循环后的分号,这会使循环无用,并且您想要执行的所有迭代都不会发生。

        2.第二个变化是您需要将变量总数或计数之一转换为加倍以避免截断,否则您的结果将始终为整数。

        修改后的代码如下:

        import java.util.*;
        import java.io.*;
        import java.lang.*;
        import type.lib.*;
        
        public class Lists
        
        {
        	public static void main(String[] args)
        	{
        		PrintStream print = new PrintStream(System.out);
        		Scanner scan = new Scanner(System.in);
        		List<Integer> bag = new ArrayList<Integer>();
        		print.println("Enter your integers");
        		print.println("(Negative=sentinel)");
        		int total = 0;
        		int count = 0;
        		
        		for (int in = scan.nextInt(); in > 0; in = scan.nextInt())
        		{
        			total = total + in;
        			count = count + 1;
        		}
        		
        		double x = (double)total / count;
        		print.println("The average is: " + x);
        	}
        }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-02
          • 2020-03-25
          • 2019-06-04
          • 1970-01-01
          • 2016-01-05
          相关资源
          最近更新 更多