2012-10-23 221 views
0

我需要帮助了解如何编写一个带有一定数量整数(必须是1到10)的for循环,并且一旦进入0就停止输入数字0将是最后一个数字)。到目前为止我的代码是:需要输入输入数组,直到用户输入0 JAVA

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被输入,然后循环停止输入数组。

感谢您的帮助!

+2

任何字符或无效的输入来处理异常,你可能希望要使用ArrayList,它不会要求您动态设置它的大小http://www.anyexample.com/programming/java/java_arraylist_example.xml –

+1

'用一个设定的长度初始化一个数组'' - 您不需要至。只需要一个动态增加其大小的ArrayList。而且我看到你已经使用了两个不同的变量来表示你的状况中的你的号码。 –

+0

你们可以请进入更多的细节? – Zach

回答

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条件,因为您已经在循环中检查它。

1

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

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

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

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

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 

    } 
} 

我希望这将解决您的疑问.. 超出这个u需要,如果用户输入如上