2013-09-28 62 views
0

我剛剛開始學習如何使用Java進行編程,並且我對掃描器輸入有疑問。我正在構建一個小程序,只需要用戶輸入以創建數值數組。我想知道是否有辦法檢查包含for循環的數值輸入,而不是在for循環中檢查每個case。For循環中的多個掃描器輸入

以及其他任何關於我的代碼的意見或建議,以幫助我改進和理解我在做什麼將不勝感激!

謝謝!

編輯:我從運行該程序的'Main'類調用此類。

import java.util.Scanner; //Import the use of the Java Scanner 

public class ArrayBuild { // Open Application 

    private static Scanner input; 

    public Double[] anArray; 

    public static int arrayCount = 0; 

    public ArrayBuild() { // Constructor for ArrayBuild object 

     input = new Scanner(System.in); 

     arrayCount++; 

     System.out.println("This will be Array: " + arrayCount); 

     // Array Size Declaration 
     System.out.println("Enter Array Size: "); 
     while (!input.hasNextInt()) { 
      System.out.println("Please enter an integer for Array size!"); 
      input.next(); 
     } 
     int n = input.nextInt(); 
     anArray = new Double[n]; // Create 'anArray' of size n 
     // 

     for (int i = 0; i < n; i++) { // Begin For Loop 

      if (i == 0) { 
       System.out.println("Enter First Number: "); 
       while (!input.hasNextDouble()) { 
        System.out.println("Please enter a number for array data!"); 
        input.next(); 
       } 
       Double D = input.nextDouble(); 
       anArray[i] = D; 
      } 

      else if (i > 0 && i < (n - 1)) { 
       System.out.println("Enter Next Number: \n"); 
       while (!input.hasNextDouble()) { 
        System.out.println("Please enter a number for array data!"); 
        input.next(); 
       } 
       Double D = input.nextDouble(); 
       anArray[i] = D; 
      } 

      else if (i == (n - 1)) { 
       System.out.println("Enter Final Number: "); 
       while (!input.hasNextDouble()) { 
        System.out.println("Please enter a number for array data!"); 
        input.next(); 
       } 
       Double D = input.nextDouble(); 
       anArray[i] = D; 
      } 
     } // End For Loop 
    } 
} // Close Class 
+0

閱讀所有'nextX()'方法的javadoc。他們解釋他們實際閱讀的內容。 –

回答

2

爲簡化和編寫乾淨的代碼,你可以做的一件事是總是將重複的代碼分開。在你的情況下,在for循環中,你只是改變if條件中的print語句。以這樣的外部代碼 -

for (int i = 0; i < n; i++) { // Begin For Loop 

     if (i == 0) 
      System.out.println("Enter First Number: "); 

     else if (i > 0 && i < (n - 1)) 
      System.out.println("Enter Next Number: \n"); 

     else if (i == (n - 1)) 
      System.out.println("Enter Final Number: "); 

     while (!input.hasNextDouble()) { 
       System.out.println("Please enter a number for array data!"); 
       input.next(); 
     } 
     Double D = input.nextDouble(); 
     anArray[i] = D; 

    } // End For Loop 
+0

啊!這樣一個明顯的答案!非常感謝。看起來我有很多東西需要學習,而我如何看待代碼是最重要的! –