所以今天在课堂上我们必须创建一个程序,要求输入介于或等于-25和25之间的值,并在输入超出这些值的数字时退出程序。当我尝试输入任何高于25的数字或负值时,程序崩溃并弹出错误报告。
所以这是我的问题,如何使这些负面价值观起作用。我将下面的程序包括在内,以帮助任何你愿意帮助解决这个问题的人。
import java.util.Scanner;
public class Program2
{
public static void main(String[] args)
{
Scanner scan = new Scanner (System.in);
int occurrences[] = new int [51];
System.out.println ("Enter integers in the range if -25 through 25.");
System.out.print ("Signal end with a");
System.out.println ("number outside the range.");
int entered = scan.nextInt();
while (entered >= -25 && entered <= 25)
{
occurrences [entered] ++;
entered = scan.nextInt();
}
System.out.println ("Number\tTimes");
for (int check = -(25); check <= 25; check++)
if (occurrences [check] >= 1)
System.out.println (check + "\t" + occurrences [check]);
}
}
答案 0 :(得分:3)
问题在线
occurrences [entered] ++;
负数不能用作数组的索引。为了解决这个问题,您可以使用单独的变量来跟踪扫描值的数量,例如count
并使用它来访问数组。
答案 1 :(得分:2)
问题在于您不能使用负数来索引Java数组。
您可以像这样移动数组索引:
occurrences [entered + 25] ++;
这会将数字从-25重新映射到25,为0到50,允许它们用作数组索引。
(您需要相应地更改程序的其余部分;我将此作为练习留给读者。)
答案 2 :(得分:1)
数组索引不能为负数。因此,一个肮脏的解决方案(但工作)将在将其用作数组索引之前将值添加25。这适用于负数,但不适用于nurber&gt; 25.要使用这些值,您需要使用更大的数组或使用不同的存储值的方法。