使用字符串分词器在列表中查找两个特定数字
Finding two specific numbers in a list using string tokenizer
我试图通过将输入列表中的两个特定数字 (25,55) 转换为标记来找到它们。例如下面 - 字符串列表 = (52 98 55 86 42 25 87 566 56 843)。
仅供参考,这些数字是一周内为图书馆购买的书籍的价格。
如果它们都在一条线上,那么我想知道 (print "both")。如果只有其中一个在行中或类似 5562 或 3259(另一个数字的一部分),我想要一个 [= "no" 的 24=]。我想这就是我将它们转换为令牌的原因。
除非我删除 else 语句,否则下面的代码不起作用,即使我删除了它,它也会打印出 "both" 无论我输入什么数字,即使没有 25 或 55。对不起,如果这看起来像一个愚蠢的问题,对编码来说还很陌生。
package part;
import java.io.File;
import java.io.IOException;
import java.util.StringTokenizer;
public class Part {
public static void main(String[] args) throws Exception {
String list = "52 98 55 86 42 25 87 566 56 843";
StringTokenizer tokenizer = new StringTokenizer(list);
String rp = tokenizer.nextToken();
if (rp.equals("25") && rp.equals ("55")){
System.out.println("both");
} else {
System.out.println("no");
}
}
在数据库端获取查询时,StringTokenizer 的工作方式类似于 ResultSet。考虑到这一点,你应该这样做:
public static void main(String[] args) throws Exception {
String list = "52 98 55 86 42 25 87 566 56 843";
List<String> tokenList = new ArrayList<>();
StringTokenizer tokenizer = new StringTokenizer(list);
while(tokenizer.hasMoreTokens()){
tokenList.add(tokenizer.nextToken());
}
if(tokenList.contains("25") && tokenList.contains("55")){
System.out.println("both");
} else {
System.out.println("no");
}
}
StringTokenizer class 现已弃用。推荐使用Stringclass或者regex(正则表达式)的split()方法
如果您想检查是否包含它们,请尝试使用以下代码。
String list = "52 98 55 86 42 25 87 566 56 843";
String[] strarr = list.split("\s+");
boolean first;
boolean second;
for(String str:strarr){
if(str.equals("25")) first=true;
if(str.equals("55")) second=true;
if(first && second) break;
}
if(first && second) System.out.println("both");
else System.out.println("no");
我试图通过将输入列表中的两个特定数字 (25,55) 转换为标记来找到它们。例如下面 - 字符串列表 = (52 98 55 86 42 25 87 566 56 843)。 仅供参考,这些数字是一周内为图书馆购买的书籍的价格。
如果它们都在一条线上,那么我想知道 (print "both")。如果只有其中一个在行中或类似 5562 或 3259(另一个数字的一部分),我想要一个 [= "no" 的 24=]。我想这就是我将它们转换为令牌的原因。
除非我删除 else 语句,否则下面的代码不起作用,即使我删除了它,它也会打印出 "both" 无论我输入什么数字,即使没有 25 或 55。对不起,如果这看起来像一个愚蠢的问题,对编码来说还很陌生。
package part;
import java.io.File;
import java.io.IOException;
import java.util.StringTokenizer;
public class Part {
public static void main(String[] args) throws Exception {
String list = "52 98 55 86 42 25 87 566 56 843";
StringTokenizer tokenizer = new StringTokenizer(list);
String rp = tokenizer.nextToken();
if (rp.equals("25") && rp.equals ("55")){
System.out.println("both");
} else {
System.out.println("no");
}
}
在数据库端获取查询时,StringTokenizer 的工作方式类似于 ResultSet。考虑到这一点,你应该这样做:
public static void main(String[] args) throws Exception {
String list = "52 98 55 86 42 25 87 566 56 843";
List<String> tokenList = new ArrayList<>();
StringTokenizer tokenizer = new StringTokenizer(list);
while(tokenizer.hasMoreTokens()){
tokenList.add(tokenizer.nextToken());
}
if(tokenList.contains("25") && tokenList.contains("55")){
System.out.println("both");
} else {
System.out.println("no");
}
}
StringTokenizer class 现已弃用。推荐使用Stringclass或者regex(正则表达式)的split()方法
如果您想检查是否包含它们,请尝试使用以下代码。
String list = "52 98 55 86 42 25 87 566 56 843";
String[] strarr = list.split("\s+");
boolean first;
boolean second;
for(String str:strarr){
if(str.equals("25")) first=true;
if(str.equals("55")) second=true;
if(first && second) break;
}
if(first && second) System.out.println("both");
else System.out.println("no");