我正在編寫一個家庭作業程序,我要用菜單修改字符串。其餘的代碼工作正常,除了一個部分,讓我在一個綁定。我正在使用一種方法來查找字符串中的單詞及其所有出現的位置。每當我在循環外執行這個方法時,我會得到我需要的結果,但是無論何時我在while或switch語句中使用它,程序都不會給我任何回報。該方法需要返回int的出現次數。這是該代碼的摘錄:我的程序方法不會輸出任何東西
import java.util.Scanner;
public class test {
public static Scanner scnr = new Scanner(System.in);
public static int findWord(String text, String userText) {
int occurance = 0;
int index = 0;
while (index != -1) {
index = userText.indexOf(text, index);
if (index != -1) {
occurance++;
index = index + text.length();
}
}
return occurance;
}
public static void main(String[] args) {
System.out.println("Enter a text: ");
String userText = scnr.nextLine();
System.out.println("Enter a menu option");
char menuOption = scnr.next().charAt(0);
switch (menuOption) {
case 'f':
System.out.println("Enter a phrase from text: ");
String text = scnr.nextLine();
int occurance = (findWord(text, userText));
System.out.println("" + text + " occurances : " + occurance + "");
break;
default:
System.out.println("Goodbye");
}
return;
}
}
現在我已經注意到一些事情。如果我在方法內部提示用戶,我確實找回了我的整數,但沒有找到我正在查找的文本,以便在switch語句中完成我的println。每當我提示用戶輸入switch語句中的單詞時,我什麼也收不回來。如果有人對我有任何解決方案,我將不勝感激,因爲我不知道我可以忽略或失蹤。
請了解如何調試您的代碼。所以你可以看到發生了什麼。出於某種原因,文本被讀爲空字符串,所以你的循環永遠不會結束(字符串「」在每個循環的索引0處找到!)。 – Heri
原因可能是因爲您在循環中使用'nextLine()'後面的nextL()',因爲後者不會消耗最後一個換行符,所以必須發生此問題。你有沒有檢查這個線程?http://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-nextint-or-other-nextfoo –