使用字符串标记生成器

时间:2018-04-27 19:30:50

标签: java if-statement search numbers stringtokenizer

我试图通过将它们转换为标记来在输入列表中找到两个特定数字(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");
      } 
}

2 个答案:

答案 0 :(得分:1)

在DB端获取查询时,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");
    }
}

答案 1 :(得分:0)

现在不推荐使用StringTokenizer类。建议使用String类的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");