使用Scanner和nextLine来结束程序

时间:2014-04-21 09:30:25

标签: java java.util.scanner

我应该创建一个程序,从命令行继续读取用户输入,直到用户键入 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 hello这是一个测试,我不会退出。

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

1 个答案:

答案 0 :(得分:1)

一种选择是:

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

如果“退出”这个词。如果存在,indexOf方法将返回正值。

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

为了使这个条件成立,' a'必须完全等于"退出",与任何其他字符串相比,即使稍有不同,也会返回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);
        }

    }