在for
循环中,我想读取字符串line
,检查下一个单词是否为数字,得到它。
循环定义了我想要的出现次数。 i=1
,第一次出现行,i=2
,第二次等等......
String output = "line 10 bla bla bla line 20, line 30"
for(int i=1;i<=3;i++) {
Scanner scanner = new Scanner(output);
while(scanner.hasNext()) {
String word = scanner.next();
if(word.equals("line")) {
if(scanner.hasNext()) {
String nextWord = scanner.next().replaceAll("[^\\d]", "");
if(nextWord.chars().allMatch(Character::isDigit)) {
//I want to stop reading and Just go to the next loop and check for the i occurence
}
}
}
}
}
输出
i=1
- &gt; 10
i=2
- &gt; 20
i=3
- &gt; 30
答案 0 :(得分:0)
您可以使用字符串数组分别保存所有单词,然后检查数组中的&#34; line&#34;以及后续数字。
String output = "line 10 bla bla bla line 20, line 30"
int i=0;
int occurences=0;
String[] wordArray=new String[50];
Scanner scanner = new Scanner(output);
while(scanner.hasNext()) {
wordArray[i++]=scanner.next();
}
for(i=0;i<wordArray.length;i++)
{
if(wordArray[i].equals("line"))
{
System.out.println("occurence: "+ ++occurences);
if(wordArray[i+1].matches("\\d+")
System.out.println(wordArray[i+1]);
else
System.out.println("not a number");
}
}
答案 1 :(得分:0)
如果您的问题只是如何打破内循环,那么这就是解决方案:
/base-site-template/public
答案 2 :(得分:0)
你可以先读取整行并删除逗号,然后将空格分隔的单词存储在一个String数组中,以检查单词&#34; line&#34;之后的下一个单词。是一个使用try catch块的数字。如果它是一个数字,它将被保存为int。
字符串输出=&#34;第10行bla bla bla line 20,第30行&#34 ;;
output = output.replaceAll(",","");
String[] words = output.split(" ");
for(int i = 0; i<words.length-1;i++){
if(words[i].equals("line")){
try{
Integer.parseInt(words[i+1]);
System.out.println("is number");
int digit = Integer.parseInt(words[i+1]);
System.out.println("Digit is " +digit);
}
catch(NumberFormatException e){
System.out.println("is not a number");
}
}
}