2013-06-27 25 views
3

我是新來的編程人員,而且我的掃描儀班級出現問題。這段代碼是在一個循環中,當循環出現在第二,第三時,無論我什麼時候設置它跳過第一個標題輸入。 我需要幫助,爲什麼它在開始時跳過我的標題掃描儀輸入?掃描儀班級正在跳過線路

System.out.println("Title:"); 

list[i].title=keyboard.nextLine(); 

System.out.println("Author:"); 

list[i].author=keyboard.nextLine(); 

System.out.println("Album:"); 

list[i].album=keyboard.nextLine(); 

System.out.println("Filename:"); 

list[i].filename=keyboard.nextLine(); 
+4

您能發佈完整的代碼嗎? – Reimeus

+0

「跳過」是什麼意思?這段代碼駐留在哪裏?給我們一些[示例代碼](http://sscce.org/)來運行,顯示問題。 –

回答

1

它是可能的,在代碼中你還沒有告訴我們,存在於Scanner不消耗換行符方法的輸入方法的調用。例如,nextLine。在這種情況下,換行符將從循環結尾傳遞到隨後的nextLine聲明。這現在不會阻止收到輸入。解決方案是確保在每次迭代結束時消耗換行符

// list[i].id = keyboard.nextInt(); 
list[i].id = Integer.parseInt(keyboard.nextLine()); 
+0

是的,你是對的,這只是代碼的一部分!代碼的最後一行是nextInt(); –

+0

我學到的是,當你有一行掃描儀例如 –

+0

我所學到的是,當你有一行掃描儀,例如keyboard.nextLine();然後keyboard.nextInt();計算機存儲已掃描的字符串,並且它已準備好進行下一次迭代,但是在掃描完成後,計算機不會完成迭代,直到nextLine語句。因此,無論何時需要下一個Int,都需要先完成下一步,然後才能輸入Scanner中的下一條信息。該字符串不需要被nextLined它自動執行。 –