#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.