我应该创建一个程序,从命令行继续读取用户输入,直到用户键入 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方法。这可能吗,我错了什么?
答案 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);
}
}