1

我需要帮助了解如何编写一个接收一定数量整数(必须是 1 到 10)的 for 循环,一旦输入 0(0 将是最后一个数字),它就会停止接收数字。到目前为止,我的代码是:

   import java.util.Scanner;
   public class countNum {

      public static void main(String[] args) {

        int[] array;

        Scanner input = new Scanner(System.in);
        System.out.println ("Enter in numbers (1-10) enter 0 when finished:");

        int x = input.nextInt();

        while (x != 0) {
          if (x > 2 && x < 10) {
          //Don't know what to put here to make array[] take in the values
          }
          else
          //Can I just put break? How do I get it to go back to the top of the while loop?
        }
      }   

     }

}

我不明白如何在让扫描仪读取一定数量的未知长度的数字的同时初始化具有设定长度的数组,直到输入 0,然后循环停止接收数组的输入。

谢谢你的帮助!

4

3 回答 3

1

好的,这里有更多细节:-

  • ArrayList如果你想要一个动态增加的数组,你需要使用。你这样做: -

    List<Integer> numbers = new ArrayList<Integer>();
    
  • 现在,在上面的代码中,您可以将number阅读语句 ( nextInt) 放在 while 循环中,因为您想定期阅读它。并在 while 循环中添加一个条件以检查输入的数字是否为 int:-

    int num = 0;
    while (scanner.hasNextInt()) {
        num = scanner.nextInt();
    }
    
  • 此外,您可以自行移动。只需检查号码是否0。如果不是0,则将其添加到ArrayList:-

    numbers.add(num);
    
  • 如果是0,请跳出您的 while 循环。

  • 而且您在 while 循环中不需要该x != 0条件,因为您已经在循环内检查它。

于 2012-10-23T04:53:02.203 回答
1

在您的情况下,用户似乎能够输入任意数量的数字。对于这种情况,拥有一个数组并不理想,因为需要在数组初始化之前知道数组的大小。不过,您有一些选择:

  1. 使用ArrayList。这是一种动态扩展的动态数据结构。
  2. 询问用户他/她将要输入的数字数量,并使用它来初始化数组。
  3. 根据对大小的一些假设创建一个数组。

在情况 2 和 3 中,您还需要包含一些逻辑,使程序在以下情况下停止: (1) 用户输入 0 (2) 或当用户提供的数字数量超过数组的大小时。

我建议坚持第一个解决方案,因为它更容易实施。

于 2012-10-23T04:54:25.313 回答
1

我强烈建议你去体验一下 Java Collections。

您可以将程序修复为

import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;

  public class arrayQuestion {

    public static void main(String[] args) {

        List<Integer> userInputArray = new ArrayList<Integer>();

        Scanner input = new Scanner(System.in);
        System.out.println("Enter 10 Numbers ");
        int count = 0;
        int x;
        try {
            do {
                x = input.nextInt();
                if (x != 0) {
                    System.out.println("Given Number is " + x);
                    userInputArray.add(x);
                } else {
                    System.out
                            .println("Program will stop Getting input from USER");
                    break;
                }
                count++;
            } while (x != 0 && count < 10);

            System.out.println("Numbers from USER : " + userInputArray);
        } catch (InputMismatchException iex) {
            System.out.println("Sorry You have entered a invalid input");
        } catch (Exception e) {
            System.out.println("Something went wrong :-( ");
        }

        // Perform Anything you want to do from this Array List

    }
}

我希望这能解决您的疑问.. 除此之外,如果用户输入任何字符或无效输入,您需要处理异常,如上所述

于 2012-10-23T05:12:52.470 回答