簡體   English   中英

我可以在for循環的標題中使用input.next()嗎?

[英]Can I use input.next() in the header of a for loop?

我試圖讀取n行形式的輸入,每行包含一個字符串和一個int,並用一個空格隔開。 除了提供的字段外,我的教授禁止使用數據字段,因此我最終嘗試使用輸入內容。 我一直得到一個inputMismatchException,它指向我的for循環的標題,並且我不知道它讀取的內容是什么導致了inputMismatchException。

我編寫了代碼嘗試使用int變量來表示我的for循環應該迭代的最大迭代次數,並且它似乎沒有任何錯誤。

       for(int i = 0; i<input.nextInt();i++) {
           insert(input.next(), input.nextInt(), tree);
       }

以下是我對變量所做的操作(如果允許創建數據字段該怎么辦)

     int data = Integer.parseInt(input.next());
     for (int i = 0; i<data; i ++) {
       insert(input.next(),input.nextInt(),tree);
     }

在嘗試輸入的樣本時

3

地球10

金星30

木星5

輸入維納斯30后會彈出錯誤消息。我迭代時從for循環頭中的input.next()獲取的值是否發生變化(我看不出為什么會這樣)? 還是這僅僅是邏輯錯誤?

每次執行主體之前,for循環都會檢查其條件。 因此,在每次執行主體之后,都會完成增量,然后檢查i<input.nextInt() 在此檢查過程中,將要求掃描程序輸入整數,因此對條件的每次檢查都會消耗一個整數。 而且由於您的輸入沒有可用於此目的的整數,因此將無法使用。

Andreas說的對,“字段”是指實例變量(或者,很少是類變量),而不是局部變量,但是如果在for循環外不需要行星數,則可以在循環的頭文件中聲明它,並且它的作用域是循環:

for (int count = input.nextInt(), i = 0; i < count; ++i) {
    insert(input.next(), input.nextInt(), tree);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM