Любой, кто мог бы помочь мне с java.util.Scanner class Я не могу точно выяснить, как использовать метод разделителя.Разделитель сканера Java
вход: teamA-teamB 4-5
выход: teamA: teamB: 4: -5
ожидается выход: teamA: teamB: 4: 5
Кусок моего кода:
public void readResult(){
String team1, team2;
int goals1, goals2;
Scanner scanner = new Scanner(System.in);
scanner.useDelimiter("\\s*-\\s*");
if (scanner.hasNext()){
team1 = scanner.next();
scanner.useDelimiter("\\d*-\\d*");
if(scanner.hasNext()){
team2 = scanner.next().trim();
scanner.useDelimiter("-");
if(scanner.hasNext()){
goals1 = scanner.nextInt();
scanner.useDelimiter("\\n");
if(scanner.hasNext()){
goals2 = scanner.nextInt();
System.out.println(team1 + ":" + team2 + ":" + goals1 + ":" + goals2);
scanner.close();
return;
}
}
}
}
scanner.close();
System.out.println("bad format");
}
Спасибо, Ill читать на регулярных выражений перегруппировки. ваш пример отлично работает. – Mss
Стоит прочитать, чтобы убедиться, что вы понимаете код, но общая его суть является внешним (внутренним регулярным выражением) в круглых скобках, позволяющим извлекать определенные части соответствия для последующего использования. Итак, как простой пример, regex '' hay (nee + dle) stack "' с входом '' hayneeeeeeedlestack "' будет хранить в группе 1 '' neeeeeeedle''. –
Также я не уверен в ваших точных форматах ввода и обработке ошибок, регулярное выражение, возможно, нуждается в настройке (например, может потребоваться '(. +?)' Вместо '(. *?)', Чтобы гарантировать, что команда1 не пусто). –