[英]java input string with spaces
我試圖讀取一些“問題”類型的數據,其中包含id(int),statement(string)和answer(string)。 我使用下面的代碼:
Scanner scanner = new Scanner(System.in);
System.out.print("Id (uniquely!): ");
int id = scanner.nextInt();
System.out.print("Statement : ");
String statement = scanner.next();
System.out.print("Answer: ");
String answer = scanner.next();
如果我像這樣輸入“你是誰?” 對於“聲明”,它不等待為“回答”鍵入任何其他內容。 但如果我在我的陳述中不使用空格,它將工作得很好。 另外,如果我使用scanner.nextLine()
而不是scanner.next()
,它將無法正常工作; 它將允許我只為statement
和answer
引入一個字符串。
有人有什么主意嗎?
嘗試添加scanner.nextLine()
。 之所以會發生這種情況,是因為scanner.nextInt()
只讀取該數字而不是整行,因此該行的其余部分仍然存在。 你想要擺脫它,所以使用nextLine()
來下一行。
它可能看起來像這樣:
Scanner scanner = new Scanner(System.in);
System.out.print("Id (unic!): ");
int id = scanner.nextInt();
//Consume rest of the line
scanner.nextLine();
System.out.print("Enunt : ");
String stat = scanner.next();
System.out.print("Raspuns: ");
String ras = scanner.next();
改成 :
String statement = scanner.nextLine();
String answer = scanner.nextLine();
instead of using scanner.next();
基本上當你想嘗試輸入帶空格的字符串時,請嘗試使用scanner.nextLine()
而不是使用scanner.next()
next()只能讀取輸入直到空格。 它無法讀取由空格分隔的兩個單詞。 此外,next()在讀取輸入后將光標置於同一行。
nextLine()讀取包含單詞之間空格的輸入(即,它讀取直到行的結尾\\ n)。 讀取輸入后,nextLine()將光標定位在下一行。
這里, scanner.next()
獲取沒有空格的令牌。 你可以試試scanner.nextLine()
你的代碼不工作的原因是:nextInt()讀取整數令牌; 因此,該行整數輸入的最后一個換行符仍在輸入緩沖區中排隊,下一個nextLine()將讀取整數行的剩余部分(為空)。
因此,您必須兩次實現nextLine()才能獲得輸出。 如下所示。
Scanner scanner = new Scanner(System.in);
System.out.print("Id (uniquely!): ");
int id = scanner.nextInt();
System.out.print("Statement : ");
scanner.nextLine();
String statement = scanner.nextLine();
System.out.print("Answer: ");
String answer = scanner.nextLine();
或者您可以在掃描原始字符串變量之前掃描虛擬字符串變量,如下所示:
Scanner scanner = new Scanner(System.in);
System.out.print("Id (uniquely!): ");
String k = ""; //Dummy String Variable
int id = scanner.nextInt();
System.out.print("Statement : ");
k = scanner.nextLine(); // scanning of Dummy variable
String statement = scanner.nextLine();
System.out.print("Answer: ");
String answer = scanner.nextLine();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.