我应该创建一个程序,该程序将一直从命令行读取用户输入,直到用户键入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/