我在java中創建一個簡單的UDP客戶端和服務器。但是,當我嘗試讓用戶輸入第二個選項時,我不斷收到java.util.NoSuchElementException。java udp客戶端中的java.util.NoSuchElementException?
雖然第一選擇很有效。用戶輸入號碼,數據包被髮送到服務器,然後返回到客戶端。但是,當循環回來提示用戶另一種選擇時,即發生錯誤時。
我已經嘗試了多種不同的東西,例如在while循環內添加掃描程序實例化,試圖通過在while循環結尾處添加keyScan.nextLine()來清除掃描緩衝區,將nextInt更改爲nextLine並解析該行作爲一個整數,都無濟於事。我認爲這可能是我缺乏關於在涉及網絡時掃描器如何工作的知識,因爲這是我第一次進入java網絡。這裏的主要方法:
public static void main(String[] args) throws IOException
{
//local constants
final int CAP = 1;
final int DATE = 2;
final int FILE = 3;
final int EXIT = 4;
//local variables
int choice;
String sentence;
boolean inputFlag = false;
InetAddress IP;
/**************************** BEGIN main *****************************/
if(args.length == 1)
{
//convert arguments to bytes
IP = getIP(args[0]);
//IF it is a valid IP address
if(IP != null)
{
//prompt user to make a choice
while(inputFlag == false)
{
Scanner keyScan = new Scanner(System.in);
//print the menu
System.out.print(menu());
try{
choice = keyScan.nextInt();
//capitalize
if(choice == CAP)
{
//get sentence from user and capitalize it
sentence = cap(IP);
System.out.println(sentence);
}
else
//set loop flag to true
inputFlag = true;
}catch(InputMismatchException ime) {
//prompt user to enter correct input
System.out.println("This was not a valid input, use numbers"
+ " only!\n");
keyScan.next();
}
keyScan.nextLine();
}//END WHILE
}
else
System.out.println();
}
else
System.out.println("Usage: java UDPClient [IP address]");
}//END main
我還沒有實現的日期或文件的選擇呢,只是試圖讓工作順利進行之前,我解決這些齒輪。這是堆棧跟蹤。
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at UDPClient.main(UDPClient.java:164)
你應該學會如何閱讀stackTrace並找出發生錯誤的線路:) – JClassic 2015-03-19 05:38:23
發佈你的StackTrace! – 2015-03-19 05:38:45
@Ian好的,發佈堆棧跟蹤。另外,當你提到你已經嘗試過多種事情時,你必須詳細說明「多重」,以便回答你的問題的用戶必須知道你已經嘗試了什麼。 – madLokesh 2015-03-19 05:41:09