【问题标题】:Converting a positive integer to have a negative value将正整数转换为负值
【发布时间】:2014-03-20 12:03:30
【问题描述】:

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

    }
}

【问题讨论】:

  • “程序崩溃并弹出错误报告”它永远不会伤害您收到的非常具体的错误消息以及行号!
  • 哇。这段代码至少有两个问题,任何不回答这两个问题的人都会立即被否决。领土多大?答案被撤回。
  • @John 我没有对你投反对票,但从我对其他答案的随机投反对票数量来看,你可能想冷静一下:)
  • @John - 负下标有问题。从您的回答来看,您认为不使用hasNextInt() 是个问题。但是,规范是程序应该只期望一系列整数;使用hasNextInt() 是不必要的,因为处理非整数输入超出了要求(并且可能是 OP 未来分配的主题)。 (或者你的第二个代码问题是什么?)
  • @TedHopp 我在问题的任何地方都看不到这样的假设。如果没有明确声明只输入整数,则您的假设无效。您可能是这门课的教授,并且有比我们更详细的规格吗?

标签: java negative-number


【解决方案1】:

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

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

    occurrences [entered + 25] ++;

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

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

【讨论】:

    【解决方案2】:

    问题在线

    occurrences [entered] ++;
    

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2014-11-13
        • 2011-12-13
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-17
        • 1970-01-01
        相关资源
        最近更新 更多