Обработка строки информации

#java #java.util.scanner

#java #java.util.scanner

Вопрос:

У меня есть текстовый файл, который содержит бейсбольные команды в виде YEAR:TEAM1:POINTS1:TEAM2: POINTS2 в каждой строке.

Как я могу обработать это, чтобы в итоге я получил год, название 1-й команды и выиграли они или нет?

Я знаю, что я должен использовать разделитель n и: для разделения данных, но как я могу на самом деле отслеживать информацию, которая мне нужна?

Ответ №1:

Поскольку это домашнее задание, здесь приведено не решение, а всего лишь несколько подсказок:

  • Взгляните на класс StringTokenizer, чтобы разделить строку.
  • Взгляните на InputStreamReader и FileInputStream, чтобы прочитать файл.

Комментарии:

1. Учитывая, что его входные данные довольно хорошо сформированы, не будет ли токенизатор излишним?

2. Я думаю, я мог бы использовать System.out.println(st.nextToken(«:»)); и цикл while с использованием hasMoreTokens() для разделения частей. Но как бы мне на самом деле извлечь каждую часть, чтобы я мог ее использовать? (Например, иметь возможность возвращать имя, год и т.д.)

3. Барри правильно указал, что метод Strings split() также полезен здесь. В этом случае строковый метод возвращает массив, и вы можете назначить переменные, используя индексы массива, такие как myArray[0] и т.д.

Ответ №2:

Взгляните на метод split класса String.

Ответ №3:

Для разделения текста вы можете использовать методы String#indexOf(), String#lastIndexOf() и String#subString.

Затем, чтобы сравнить, у какой команды она есть, я бы преобразовал строку в int и затем сравнил два значения.

Ответ №4:

Как насчет полезной порции регулярных выражений?

Комментарии:

1. Регулярное выражение было бы немного излишним для этого примера. Нет необходимости чрезмерно усложнять решение.

Ответ №5:

попробуйте что-то вроде этого

 public static void readTeams() throws IOException{
    try {
        fstream = new FileInputStream("yourPath");
        in = new DataInputStream(fstream);
        br = new BufferedReader(new InputStreamReader(in));
        String s = br.readLine();
        String[] tokens = s.split(":");
        while(s!=null){               
        for (String t : tokens){
            System.out.println(t);
            }
        }
        in.close();
    } catch (FileNotFoundException ex) {    
        Logger.getLogger(YourClass.class.getName()).log(Level.SEVERE, null, ex);
    }
}
  

Комментарии:

1. Джо. Logger.getLogger() для нового файла. Также -1 за представление полного решения домашней работы.

2. Logger.getLogger() автоматически генерируется Netbeans… 🙂 Я не проверял, является ли это рабочим решением, надеюсь на это. Я надеюсь, что он научится использовать эти простые классы!

Ответ №6:

Вот пример, найденный на java-examples.com

 String str = "one-two-three";
  String[] temp;

  /* delimiter */
  String delimiter = "-";
  /* given string will be split by the argument delimiter provided. */
  temp = str.split(delimiter);
  /* print substrings */
  for(int i =0; i < temp.length ; i  )
    System.out.println(temp[i]);//prints one two three on different lines
  

Теперь для чтения входных данных вы можете использовать BufferedReader и FileReader, проверьте примеры для этого в Google.