Java 使用Scanner和nextLine结束程序
我应该创建一个程序,该程序会一直从命令行读取用户输入,直到用户类型退出为止。我还将使用indexOf来获取所有空格字符的位置 我尝试了以下几点:Java 使用Scanner和nextLine结束程序,java,java.util.scanner,Java,Java.util.scanner,我应该创建一个程序,该程序会一直从命令行读取用户输入,直到用户类型退出为止。我还将使用indexOf来获取所有空格字符的位置 我尝试了以下几点: import java.util.Scanner; import java.lang.String; public class Aufgabe6b { public static void main(String[] args) { Scanner scanner=new Scanner(System.in);
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有问题
如果我键入:
你好,这是一个测试退出,它没有退出。
如果我键入quit,它会打断队列。
如果我输入quit hello这是一个测试,我不会退出
我应该只使用indexOf和Scanner以及nextLine方法。这是否可能,我做错了什么?一个选项是:
while(true)
{
a=scanner.nextLine();
int j = a.indexOf("quit");
if (j >= 0)
break;
}
如果存在单词“quit”,则indexOf
方法将返回正值
代码中的问题是:if(“quit”.equals(a))
要使此条件为true,“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);
}
}
公共静态LinkedList定位器(字符串源,字符串模式){
LinkedList=新建LinkedList();
int index=source.indexOf(模式);
如果(索引==-1)返回列表;
列表。添加(索引);
while(true){
index=source.indexOf(模式,索引+1);
如果(索引==-1)返回列表;
列表。添加(索引);
}
}
这没用。如果我输入justquit,程序就会退出,因为j仍然是0。如果我退出了类型测试,j是5,它不会结束。我的意思是,在if的情况下,我可以使j>0,但如果我键入quit,它不会退出,因为j仍然是0。我现在尝试>=0,它似乎有效。你还能帮我收集用户输入的所有空间吗?例如:“测试Hello Guy”应该是2。我必须使用indexOf,但它只告诉我第一个空格不是全部。Thx:)还有办法给我所有的“”位置吗?不仅仅是一行,我的意思是如果我在测试中输入Hello,我的主退出,他会告诉我“”在位置4,3,我猜就是这样。我必须使用indexOf,我尝试了a.indexOf(“”),它对第一个位置很有效,但对第二个和以后的位置无效。请检查编辑,我为您创建了一个方法来查找发生次数,另一个方法用于查找所有位置无问题,很高兴提供帮助:)