我应该创建一个程序,该程序将一直从命令行读取用户输入,直到用户键入quit为止。我还将使用indexOf来获取所有空格字符的位置。

我尝试了以下操作:

import java.util.Scanner;
import java.lang.String;
public class Aufgabe6b {

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

        String a;
        System.out.println("Bitte Eingabe machen!");
        while(true){

            a=scanner.nextLine();
        if("quit".equals(a)){
            break;
        }
        }
        System.out.println(a.indexOf(" "));
    }
}


虽然a.indexOf只给了我找到的第一个“”位置,但我仍然遇到扫描仪问题和退出问题。

如果我输入:

您好,这是一个测试退出,它不会退出。
如果我键入只是退出,它将中断队列。
如果我键入quit,您好,这是一个测试,我不会退出。

我应该只使用indexOf和Scanner以及nextLine方法。这可能吗,我错了吗?

最佳答案

一种选择是:

while(true)
{
  a=scanner.nextLine();
  int j = a.indexOf("quit");
  if (j >= 0)
     break;
}


如果出现单词“ quit”,则indexOf方法将返回一个正值。

您的代码中的问题在这里:if("quit".equals(a))

为了使此条件为真,“ a”必须完全等于“ quit”,与其他字符串稍有不同的字符串相比,将返回false。

希望这能解决它:)

编辑:要查找发生的次数:

public static int OccurenceFinder(String source, String pattern) {
    int counter = 0;
    int index = source.indexOf(pattern);
    if (index == -1) return 0;
    counter++;
    while (true) {
        index = source.indexOf(pattern, index + 1);
        if (index == -1) return counter;
        counter++;
    }

}


编辑:查找职位

public static LinkedList<Integer> PositionFinder(String source, String pattern) {
        LinkedList<Integer> list = new LinkedList<Integer>();
        int index = source.indexOf(pattern);
        if (index == -1) return list;
        list.add(index);
        while (true) {
            index = source.indexOf(pattern, index + 1);
            if (index == -1) return list;
            list.add(index);
        }

    }

关于java - 使用Scanner和nextLine结束程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23194519/

10-11 01:41