2013-10-26 58 views
-3

當我在主體中使用布爾方法時,我的程序凍結並停止工作。我試着把這個方法放在不同的地方,但同樣的事情發生 - 它凍結。爲什麼我的程序在使用方法時會凍結? (Java)

該方法非常簡單,寫得很好,我不確定是什麼原因導致了問題。

P.S.該方法位於代碼的底部。

感謝您的幫助!

編輯:這是一個愚蠢的問題,現在我看着它。再次感謝大家!

public static void main(String[] args) { 
     Scanner keyboard = new Scanner(System.in); 
     int stringNumber = 0; 
     String[] stringArray = new String[10]; 


     for (int i = 0; i <= stringArray.length; i++) { 

      boolean itemExists = false; 
      boolean AddItem = AddItem(); 


      if (AddItem == true) { 

       out.println("\nEnter a string"); 
       String input = keyboard.next(); 

       if (i > 0) { 
        for (int j = 0; j < stringArray.length; j++) { 
         if (input.equalsIgnoreCase(stringArray[j])) { 
          itemExists = true; 
          out.println("Item \"" + input + "\" already exists."); 
          break; 
         } 
        } 
       } 

       if (itemExists == false) { 
        stringArray[stringNumber] = input; 
        out.println("\"" + stringArray[stringNumber] + "\"" + " has been stored.\n"); 
       } else { 
        out.println("Try again."); 
        i--; 
       } 

       PrintArray(stringArray); 
       stringNumber++; 
      } 
     } 
    } 

    // This is the method I was talking about // 
    public static boolean AddItem() { 
     Scanner keyboard = new Scanner(System.in); 
     int input = keyboard.nextInt(); 
     out.println("If you want to add an item, Press 1"); 

     if (input == 1) { 
      return true; 
     } else { 
      out.println("Invalid input."); 
      return false; 
     } 
    } 
+1

此代碼是不完整的 - 有各種方法和變量你沒有告訴我們。請提供簡短但完整的程序來演示該程序。另外,如果您使用調試器會發生什麼?爲什麼在你告訴用戶他們應該輸入什麼之前請求輸入? –

+1

從控制檯輸入一些整數值,從你運行程序和Magic! –

+0

對不起,有時候我看不到最明顯的東西... – Gregg1989

回答

5

我懷疑它有沒有被凍結 - 它只是等待輸入。遺憾的是它並沒有告訴你,這是等待輸入,由於這兩個語句的順序:

int input = keyboard.nextInt(); 
out.println("If you want to add an item, Press 1"); 

交換機的一個圓和程序使得很多更有意義。即使不切換它們,它也不會凍結 - 它只是等待輸入。

+0

什麼時候是你最後一次downvote? – SpringLearner

+2

@javaBeginner IllegalArgumentException :) –

+0

@NarendraPhai離開約downvote,我不認爲有任何答案有0投票 – SpringLearner

0

您正在使用scanner.nextInt()這是等待用戶輸入不凝固。從控制檯輸入所需數量的值。

0

打印然後捕獲輸入。即

System.out.print(something); 
int i = keyboard.nextInt(); 
相關問題