我的代碼應做到以下這部分:if語句和的try-catch不會阻止錯誤
- 檢查輸入是INT型(的try-catch)
- 如果輸入一個INT,檢查它是否在列表之間:
代碼
public static void selection(List<Performer> listperformer)
{
int i=0;
List<Performer> idlist = new ArrayList<Performer>();
Scanner sclocal = new Scanner(System.in);
if(listperformer.isEmpty() == true)
{
System.out.println("- empty -");
return;
}
else
{
System.out.println("Enter IDs:");
int id;
id=sclocal.nextInt();
while(sclocal.hasNext())
{
try{
id=sclocal.nextInt();
}catch(InputMismatchException exception)
{
System.out.println("Invalid input!");
}
if(listperformer.size() <= id || id < 0)
{
System.out.println("Invalid input! 294");
return;
}
else
{
idlist.add(listperformer.get(id));
}
id=sclocal.nextInt();
}
}
不起作用。問題: 1.
- ,如果我把一個錯誤的ID,他問我把在另一併在此之後 拋出一個異常
- ,如果我把一個字符串拋出一個「InputMismatchException時」
我們假設,我們列表中只有三個條目。 結果:
Input: 5
Output:
Input: 4
Output: Invalid input! 294
Input: asdf
Output: Exception in thread "main" java.util.InputMismatchException...
你觀察到的「有問題」的用例的工作原理完全一樣,意,或能更好地說 - 因爲它是編碼和預期。 – Shark
爲了更好地理解你的代碼在做什麼,使用幾乎可以肯定內置到IDE(或獨立調試器)中的調試器,並逐步瀏覽代碼。使用調試器是學習編程的重要部分,而非可選部分。 –