2016-01-20 56 views
2

我剛回來的編程馬,所以我做了一些基本的問題,在Java中的CodeAbbey.com。給定一個標準輸入,其中輸入中的第一個整數是成對的數量,隨後的所有後續輸入都是成對的數字。我通過運行代碼並粘貼它然後使用掃描儀讀取它來輸入它。我的代碼應該將各個數字對分別相加,然後輸出每個以空格分隔的答案。例如:最後輸出沒有出現

data: 
3 
100 8 
15 245 
1945 54 

answer: 
108 260 1999 

這裏是我的嘗試:

import java.util.Scanner; 

public class Solution { 
    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     int size = in.nextInt(); 

     for (int i = 1; i <= size; i++) { 
      int sum = in.nextInt() + in.nextInt(); 
      System.out.print(sum); 
      if (i < size) { 
       System.out.print(" "); 
      } 
     } 
    } 
} 

的代碼實際工作,但問題是,它最初沒有輸出的最後一筆。它打印所有總數到最後一個總數,但我必須再次按下輸入才能打印最後一筆總額,並從所有其他總數中打印一行。無論使用多少組或平臺,都會發生這種情況;直到我再次擊中輸入,最後的總和纔會打印出來。任何想法爲什麼這是發生?

+0

有在除了最後一個每行的末尾無形字符。您並未添加「額外輸入」,您正在彌補數據集中缺少的輸入。將來,請更準確地瞭解您在輸入數據時所做的工作,但我們很多人不得不撓頭想象自己可能會做錯什麼,因爲該程序按照您的說法工作。 –

回答

0

壓,直到進入Scanner將不會收到任何輸入。

按Enter鍵後,文本行,例如「1945 54」被輸入掃描儀。現在它可以返回下一個intScanner將阻塞,直到它可以讀取足夠的輸入,並且如果您還沒有按Enter鍵,它將保持阻塞狀態。這就是爲什麼按下回車允許程序打印總和。

+0

如果我的理解是正確的,由於輸入格式化的方式,除了最後一行之外的每一行基本上已經有的代碼。因此,對於最後一行,我需要手動按下輸入或掃描儀將不會得到輸入。有沒有辦法編寫它,所以我不必手動按下輸入而不改變輸入格式化的方式? – sToxic5

+0

無論您是輸入您自己,還是輸入從文件重定向,最後一行之後的換行符都必須存在。 – rgettman

0

直到你按下回車鍵,它被掛在輸入程序,因爲你實際上可能準備增加更多的可掃描數據(或其他數字的最後一位數字)正確無誤。