我的程序方法不会输出任何东西

时间:2016-11-25 17:55:53

标签: java methods switch-statement

我正在编写一个家庭作业程序,我将使用菜单修改字符串。其余的代码工作得很好,除了一个让我在绑定中的部分。我正在使用一种方法,以便在字符串中查找单词及其出现的所有内容。每当我在循环之外执行此方法时,我得到了我需要的结果,但每当我在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语句中的单词时,我什么也得不回来。如果有人对我有任何解决方案,我会非常感激,因为我不知道我可以忽视或遗失的东西。

2 个答案:

答案 0 :(得分:0)

您需要将char menuOption = scnr.next().charAt(0);更改为char menuOption = scnr.nextLine().charAt(0);

答案 1 :(得分:0)

问题在于您的Scanner方法,您正在使用scnr.next()连续阅读,但应更改为scnr.nextLine()`,如下所示:

public static void main(String[] args) {
        Scanner scnr = null;
        try {
            scnr = new Scanner(System.in);

        System.out.println("Enter a text: ");
        String userText = scnr.nextLine();

        System.out.println("Enter a menu option");
        char menuOption = scnr.nextLine().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;
        } finally {
            if(scnr != null)
                scnr.close();
        }
    }

另外,请确保在finally块中正确关闭扫描仪对象。