2016-03-30 146 views
0

因此,我正在爲即將到來的考試做一些隨機練習,而且我不知道是否這是我一直在複習幾個小時而我的大腦不能正常工作的事實,或者此代碼中的某些內容是錯誤的。爲什麼這個簡單的程序不能正常工作

我試圖做一個非常簡單的java程序,要求用戶輸入他們希望輸入的數量(totalNum),創建一個長的數組,然後詢問用戶每個單獨的值。在向用戶詢問數組中的每個值後,它將打印數組。

這裏是我的代碼:

import java.util.Scanner; 
public class Practice1 { 
    public static void main(String[] args) { 
    Scanner s = new Scanner(System.in); 
    System.out.println("How many numbers would you like to store?"); 
    int totalNum = s.nextInt(); 

    int[] numbers= new int[totalNum]; 


    for (int i = 0; i>totalNum; i++) { 
     System.out.println("Number" + i + " :"); 
     numbers[i] = s.nextInt(); 
     i++; 
    } 
    numbers.toString(); 
    System.out.println(numbers); 


} 
} 

當我運行它,它會要求我要存儲號碼的用戶,然後打印[I @ 33909752和停止。我已經完成了幾十個這樣的程序,對於我的生活,我無法弄清楚我出錯的地方。

任何幫助將不勝感激,謝謝!

+1

這也是一個重複的[這個問題](http://stackoverflow.com/questions/29140402/how-do-i-print-my-java-object-without-getting-sometype2f92e0f4),這更多地是關於奇怪的輸出。答案是有良好的閱讀,你應該確保你的理解(也許在你的考試後,當你不太強調:))。但是,對於打印出陣列的直接問題,我鏈接的問題可能更相關。 – yshavit

+0

另外,我想你在'for(int i = 0; i> totalNum; i ++)'中有個bug。第一次通過這個循環考慮'i'和'totalNum'的值;如果totalNum = 5,你希望循環迭代多少次? – yshavit

+0

謝謝大家! – Blake

回答

1

i>totalNum是問題所在。 for循環不會執行一次。

for循環有三個部分:

  1. 行動開始循環
  2. 條件
  3. 每個循環後執行的操作之前執行

你的條件是i>totalNum ,對於i = 0和totalNum = 1是錯誤的。循環將不會執行一次。

i++已在循環中提及,您不需要將其包含在循環體中。

意外的輸出是由默認的toString() - Array的方法引起的。使用Arrays.toString()作爲可讀輸出。

2

您的循環測試是向後的。這

for (int i = 0; i>totalNum; i++) { 

應該

for (int i = 0; i < totalNum; i++) { 

原樣,測試結果爲false,並且不進入循環。並且,不要在循環體中增加i(這就是在for中所做的)。最後,

System.out.println(numbers); 

不會正確打印數組,因爲數組不會覆蓋Object.toString()。您可以使用Arrays.toString

System.out.println(Arrays.toString(numbers)); 
+0

對,我修正了X.X.但是該程序仍然無法正常運行。說我說我想存儲3個數字。它應該問我3個值([0-2])。它要求我輸入值0,然後輸入值2,然後停止。爲什麼它跳躍我兩個值? – Blake

+0

您在循環體中留下了'i ++'。刪除。因爲你已經將'i'增加爲'for'的一部分。 –

+0

Omg .....我最好睡一會兒哈哈。感謝大家。我覺得我好笨 – Blake

0

你的循環條件應該是

for (int i = 0; i<totalNum; i++) { 

和環路內不增加變量i

下方使用了您期望的結果。

public class Practice1 { 
public static void main(String[] args) { 
    Scanner s = new Scanner(System.in); 
    System.out.println("How many numbers would you like to store?"); 
    int totalNum = s.nextInt(); 

    int[] numbers= new int[totalNum]; 

    for (int i = 0; i<totalNum; i++) { 
     System.out.println("Number" + i + " :"); 
     numbers[i] = s.nextInt(); 
     i++; //remove this 
    } 
    numbers.toString(); 
    System.out.println(Arrays.toString(numbers)); 


} 
} 
相關問題