Поиск двух конкретных чисел в списке с помощью строкового токенизатора - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь найти два конкретных числа (25,55) в списке ввода, преобразовав их в токены. например ниже - список строк = (52 98 55 86 42 25 87 566 56 843). Просто для контекста, цифры - это цены на книги, купленные за неделю для библиотеки.

Если они оба в строке, то я хочу знать (выведите «оба»). Если в строке только один из них или что-то вроде 55 62 или 3 25 9 (часть другого числа), я хочу вернуть «нет». Наверное, поэтому я конвертирую их в токены.

Этот код ниже не работает, если я не удаляю оператор else, и даже когда я его удаляю, он выводит «оба» независимо от того, какие цифры я ввожу, даже если нет 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 голосов
/ 27 апреля 2018

Класс StringTokenizer устарел. Рекомендуется использовать метод split () класса String или регулярного выражения (регулярное выражение).

Попробуйте использовать приведенный ниже код, если хотите убедиться, что он содержит их оба.

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");
0 голосов
/ 27 апреля 2018

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");
    }
}
...