Java 将正整数转换为负值

Java 将正整数转换为负值,java,negative-number,Java,Negative Number,因此,今天在课堂上,我们必须制作一个程序,要求输入介于-25和25之间的值,并且在输入值之外的数字时退出该程序。当我试图输入任何大于25的数字或负值时,程序崩溃并弹出错误报告 所以我的问题是,如何让这些负值起作用。我在下面提供了一个程序来帮助任何你愿意帮助解决这个问题的人 import java.util.Scanner; public class Program2 { public static void main(String[] args) { Sca

因此,今天在课堂上,我们必须制作一个程序,要求输入介于-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]);

    }
}
import java.util.Scanner;
公共课程2
{
公共静态void main(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
整数出现次数[]=新整数[51];
System.out.println(“输入介于-25到25之间的整数”);
System.out.print(“带a的信号端”);
System.out.println(“超出范围的数字”);
int entered=scan.nextInt();

而(entered>=-25&&entered问题在于不能使用负数索引到Java数组中

可以按如下方式移动数组索引:

    occurrences [entered + 25] ++;
这将把从-25到25的数字重新映射为0到50,允许它们用作数组索引


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

问题是您不能使用负数索引到Java数组中

可以按如下方式移动数组索引:

    occurrences [entered + 25] ++;
这将把从-25到25的数字重新映射为0到50,允许它们用作数组索引


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

问题在线

occurrences [entered] ++;

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

问题已出现

occurrences [entered] ++;

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

数组索引不能为负数。因此,一个脏的解决方案(但有效)在将输入的值用作数组索引之前,将其添加到25。这将适用于负数,但不适用于nurber>25。要使用此类值,您需要使用更大的数组或使用不同的存储值的方法。

数组索引不能为负数。因此,脏解决方案(但有效)在将输入的值用作数组索引之前,将其添加到25。这适用于负数,但不适用于nurber>25。要使用此类值,您需要使用更大的数组或使用不同的存储值的方法。

“程序崩溃并弹出错误报告”把你收到的非常具体的错误信息和行号一起包括进来,从来都不会有什么坏处!哇!这段代码至少有两个问题,任何不同时回答这两个问题的人都会立即被否决。太多了?回答被撤回。@John我没有否决你,但从我另一个a的随机否决票数量来看回答者,你可能想冷静一下:)@John-负下标有问题。根据你的回答,你认为不使用
hasnetint()
是个问题。但是,规范是程序应该只需要一系列整数;使用
hasnetint()
是不必要的,因为处理非整数输入超出了要求(可能是OP未来任务的主题)。(或者您的第二个代码问题是其他问题吗?)@TedHopp我在问题的任何地方都看不到这样的假设。如果没有明确声明只输入整数,你的假设是无效的。你可能是这门课的教授,并且有比我们得到的更详细的规范吗?“程序崩溃,并弹出错误报告”把你收到的非常具体的错误信息和行号一起包括进来,从来都不会有什么坏处!哇!这段代码至少有两个问题,任何不同时回答这两个问题的人都会立即被否决。太多了?回答被撤回。@John我没有否决你,但从我另一个a的随机否决票数量来看回答者,你可能想冷静一下:)@John-负下标有问题。根据你的回答,你认为不使用
hasnetint()
是个问题。但是,规范是程序应该只需要一系列整数;使用
hasnetint()
是不必要的,因为处理非整数输入超出了要求(可能是OP未来任务的主题)。(或者您的第二个代码问题是其他问题吗?)@TedHopp我在问题的任何地方都看不到这样的假设。如果没有一个明确的声明说只输入整数,你的假设是无效的。你可能是这门课的教授,并且有比我们更详细的说明吗?