转换正整数以具有负值

时间:2014-02-19 21:20:08

标签: java negative-number

所以今天在课堂上我们必须创建一个程序,要求输入介于或等于-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]);

    }
}

3 个答案:

答案 0 :(得分:3)

问题在线

occurrences [entered] ++;

负数不能用作数组的索引。为了解决这个问题,您可以使用单独的变量来跟踪扫描值的数量,例如count并使用它来访问数组。

答案 1 :(得分:2)

问题在于您不能使用负数来索引Java数组。

您可以像这样移动数组索引:

    occurrences [entered + 25] ++;

这会将数字从-25重新映射到25,为0到50,允许它们用作数组索引。

(您需要相应地更改程序的其余部分;我将此作为练习留给读者。)

答案 2 :(得分:1)

数组索引不能为负数。因此,一个肮脏的解决方案(但工作)将在将其用作数组索引之前将值添加25。这适用于负数,但不适用于nurber&gt; 25.要使用这些值,您需要使用更大的数组或使用不同的存储值的方法。