java - 使用字符串标记器在列表中查找两个特定数字
问题描述
我试图通过将输入列表中的两个特定数字(25,55)转换为标记来找到它们。例如下面 - 字符串列表 = (52 98 55 86 42 25 87 566 56 843)。就上下文而言,这些数字是图书馆一周内购买的书籍的价格。
如果它们都在一条线上,那么我想知道(打印“两者”)。如果其中只有一个在行中或类似55 62 或 3 25 9 (另一个数字的一部分),我想要返回“否”。我想这就是我将它们转换为令牌的原因。
下面的代码不起作用,除非我删除 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");
}
}
推荐阅读
- c++ - 为什么创建大于内存的一维数组会失败,但创建大于内存的二维数组却没有问题?
- linux - 可以在挂载的文件系统上创建和删除文件,但不能创建链接或更改所有权
- sql-server - SQL 唯一行
- r - 如何交换或指定图例元素的位置?
- sql - 在一定天数后,报告中的值会下降
- javascript - 强制门户和 HTTPS 重定向
- python - 快速排序用户输入十个或八个整数 Python
- google-cloud-speech - Google Cloud Speech - 来自语音上下文短语的姓氏小写
- python - python如何从数据库中读取二进制文件并加载为图片
- php - 使用 php,ajax,jquery 登录页面