2016-11-19 78 views
0

我正在創建一個代碼,只是創建一個籃子來放入東西。這是一個家庭作業,我通過在類中顯示繼承和向子類中擴展變量做了很多工作。最簡單的事情就是抓住我。我的while循環只會在while循環的第一個循環中請求鍵盤上的水果類型的信息,然後循環跳過並轉到多少個。我究竟做錯了什麼;請記住我是一個新手,這個代碼可能沒有設置爲專業級別,這就好了。鍵盤在循環中被跳過

while((makeBasket != 'n') && (count <= 10)){ 

     System.out.print("What fruit would you like? "); 
     fruitRequest[count] = keyboard.nextLine(); 

     fruitColor = getColor(fruitRequest[count]); 

     System.out.print("How many " + fruitRequest[count] + " would you like? "); 
     fruitCount = keyboard.nextInt(); 


     Fruit fruitBasket = new Fruit(fruitRequest[count], fruitColor, fruitCount); 

     fruitBasket.print(); 
     for(int i = 0; i< 3; i++){ 
      switch(i){ 
       case 0: 
        basketRecipt[i][count] = fruitCount; 
        break; 
       case 1: 
        basketRecipt[i][count] = fruitCount * fruitBasket.getPrice(fruitRequest[count], fruitColor, fruitCount); 
        break; 
       case 2: 
        basketRecipt[i][count] = fruitCount * fruitBasket.getWeight(fruitRequest[count], fruitColor, fruitCount); 
        break; 
      } 
      } 
     count +=1; 
    } 
+0

什麼是'鍵盤'。掃描儀? –

+0

是行'fruitRequest [count] = keyboard.nextLine();'只會請求水果類型一次,而額外的水果類型可以跳過一次,直到它會跳過要求輸入,但它會從下一個鍵盤輸入中要求「多少」。 – MikeMan

+0

僅供參考,您可以根據語言擴展類屬性/成員。術語變量對於OOP來說過於通用。 Overt_Agent是正確的。下一行功能是必要的。祝你好運! – yardpenalty

回答

0

我的直覺這裏的直覺是,你需要把一個keyboard.nextLine();的fruitCount分配後:

stem.out.print("How many " + fruitRequest[count] + " would you like? "); 
fruitCount = keyboard.nextInt(); 
keyboard.nextLine(); 

nextInt()只沿着當前的路線前進,所以當while循環重新運行keyboard.nextLine()並在你輸入的int之後得到一個空白字符串的空字符串。

+0

修復它,通過沿着當前行和空字符串前進來解釋你的意思嗎?該字符串在第一次循環之前爲空,並且下一次循環時該字符串爲空,因爲它基本上使用了fruitRequest [1]。 – MikeMan

+0

基本上,nextInt()只會使掃描器前進一個整數,而nextLine()則前進到下一行(如您猜測的那樣)。所以,當你使用nextInt()在fruitCount之後得到整數時,你的掃描器仍然在fruitCount行 - 只是在它的結尾。所以當你在循環的第二次運行中調用nextLine()時,它只是返回一個空的「」字符串 - 因爲這就是所有剩下的行。我希望這能夠解決問題,如果不是的話,我建議你問問你的老師,他們可能會比我更好地解釋它。 –