Помогите решить задачу , нужно сделать через сканер , не понимаю как в метод вложить проверку ведённого значения в консоль
Помогите решить задачу , нужно сделать через сканер , не понимаю как в метод вложить проверку ведённого значения в консоль
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Input your team: ");
String team1 = scanner.next();
System.out.println("Input 1 player frags: ");
if (scanner.hasNext()) {
System.out.println("You put the wrong value! ");
System.exit(0);
}
int player1team1 = scanner.nextInt();
System.out.println("Input 2 player frags: ");
if (scanner.hasNext()) {
System.out.println("You put the wrong value! ");
System.exit(0);
}
int player2team1 = scanner.nextInt();
System.out.println("Input 3 player frags: ");
if (scanner.hasNext()) {
System.out.println("You put the wrong value! ");
System.exit(0);
}
int player3team1 = scanner.nextInt();
System.out.println("Input 4 player frags: ");
if (scanner.hasNext()) {
System.out.println("You put the wrong value! ");
System.exit(0);
}
int player4team1 = scanner.nextInt();
System.out.println("Input 5 player frags: ");
if (scanner.hasNext()) {
System.out.println("You put the wrong value! ");
System.exit(0);
}
int player5team1 = scanner.nextInt();
System.out.print("Input your team: ");
String team2 = scanner.next();
System.out.println("Input 1 player frags: ");
if (scanner.hasNext()) {
System.out.println("You put the wrong value! ");
System.exit(0);
}
int player1team2 = scanner.nextInt();
System.out.println("Input 2 player frags: ");
if (scanner.hasNext()) {
System.out.println("You put the wrong value! ");
System.exit(0);
}
int player2team2 = scanner.nextInt();
System.out.println("Input 3 player frags: ");
if (scanner.hasNext()) {
System.out.println("You put the wrong value! ");
System.exit(0);
}
int player3team2 = scanner.nextInt();
System.out.println("Input 4 player frags: ");
if (scanner.hasNext()) {
System.out.println("You put the wrong value! ");
System.exit(0);
}
int player4team2 = scanner.nextInt();
System.out.println("Input 5 player frags: ");
if (scanner.hasNext()) {
System.out.println("You put the wrong value! ");
System.exit(0);
}
int player5team2 = scanner.nextInt();
int avgResultTeam1 = (player1team1 + player2team1 + player3team1 + player4team1 + player5team1) / 5;
int avgResultTeam2 = (player1team2 + player2team2 + player3team2 + player4team2 + player5team2) / 5;
if (avgResultTeam1 > avgResultTeam2) {
System.out.println("Победила команда " + team1 + " набравшая " + avgResultTeam1 + " очков");
} else {
System.out.println("Победила команда " + team2 + " набравшая " + avgResultTeam2 + " очков");
}
scanner.close();
}
}
Ответы (1 шт):
В вашей программе вы в любом случае попадаете на строку System.exit(0); и программа завершает свою работу. Какой принцип работы метода scanner.hasNext(): данный метод возвращает true пока не закончится поток. При чтении из файла - концом потока будет конец файла. При чтении с клавиатуры концом потока будет ввод ^D (в Windows CTRL+D). То есть вы доходите до строки
if (scanner.hasNext()) {
В ЛЮБОМ случае попадаете в эту ветку и на команде System.exit(0); завершаете программу. Вам нужно убрать эту проверку, потом считывать данные с помощью метода scanner.nextLine() а не nextInt(). И проверять этот nextLine(): цифры там или нет. Вашу проверки с hasNext() удалите все, потому что вы будете в любом случае в них попадать и программа будет завершаться. Попробуйте переписать код без них, если не получится - напишите
Добавил мой вариант исправленного кода:
public class Test2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Input your team: ");
String team1 = scanner.next();
System.out.println("Input 1 player frags: ");
int player1team1=0;
try {
player1team1 = scanner.nextInt();
}
catch (InputMismatchException exc) {
System.out.println("You put the wrong value! ");}
System.out.println("Input 2 player frags: ");
int player2team1=0;
try {
player2team1 = scanner.nextInt();
}
catch (InputMismatchException exc) {
System.out.println("You put the wrong value! ");}
int player3team1=0;
try {
player3team1 = scanner.nextInt();
}
catch (InputMismatchException exc) {
System.out.println("You put the wrong value! ");}
System.out.println("Input 4 player frags: ");
int player4team1=0;
try {
player4team1 = scanner.nextInt();
}
catch (InputMismatchException exc) {
System.out.println("You put the wrong value! ");}
System.out.println("Input 5 player frags: ");
int player5team1=0;
try {
player5team1 = scanner.nextInt();
}
catch (InputMismatchException exc) {
System.out.println("You put the wrong value! ");}
System.out.print("Input your team: ");
String team2 = scanner.next();
System.out.println("Input 1 player frags: ");
int player1team2=0;
try {
player1team2 = scanner.nextInt();
}
catch (InputMismatchException exc) {
System.out.println("You put the wrong value! ");}
System.out.println("Input 2 player frags: ");
int player2team2=0;
try {
player2team2 = scanner.nextInt();
}
catch (InputMismatchException exc) {
System.out.println("You put the wrong value! ");}
System.out.println("Input 3 player frags: ");
int player3team2=0;
try {
player3team2 = scanner.nextInt();
}
catch (InputMismatchException exc) {
System.out.println("You put the wrong value! ");}
System.out.println("Input 4 player frags: ");
int player4team2=0;
try {
player4team2 = scanner.nextInt();
}
catch (InputMismatchException exc) {
System.out.println("You put the wrong value! ");}
System.out.println("Input 5 player frags: ");
int player5team2=0;
try {
player5team2 = scanner.nextInt();
}
catch (InputMismatchException exc) {
System.out.println("You put the wrong value! ");}
int avgResultTeam1 = (player1team1 + player2team1 + player3team1 + player4team1 + player5team1) / 5;
int avgResultTeam2 = (player1team2 + player2team2 + player3team2 + player4team2 + player5team2) / 5;
if (avgResultTeam1 > avgResultTeam2) {
System.out.println("Победила команда " + team1 + " набравшая " + avgResultTeam1 + " очков");
} else {
System.out.println("Победила команда " + team2 + " набравшая " + avgResultTeam2 + " очков");
}
scanner.close();
}
}
Вариант с методом:
public class Test2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Input your team: ");
String team1 = scanner.next();
System.out.println("Input 1 player frags: ");
int player1team1 = getValue();
System.out.println("Input 2 player frags: ");
int player2team1 = getValue();
System.out.println("Input 3 player frags: ");
int player3team1 = getValue();
System.out.println("Input 4 player frags: ");
int player4team1 = getValue();
System.out.println("Input 5 player frags: ");
int player5team1 = getValue();
System.out.print("Input your team: ");
String team2 = scanner.next();
System.out.println("Input 1 player frags: ");
int player1team2 = getValue();
System.out.println("Input 2 player frags: ");
int player2team2 = getValue();
System.out.println("Input 3 player frags: ");
int player3team2 = getValue();
System.out.println("Input 4 player frags: ");
int player4team2 = getValue();
System.out.println("Input 5 player frags: ");
int player5team2 = getValue();
int avgResultTeam1 = (player1team1 + player2team1 + player3team1 + player4team1 + player5team1) / 5;
int avgResultTeam2 = (player1team2 + player2team2 + player3team2 + player4team2 + player5team2) / 5;
if (avgResultTeam1 > avgResultTeam2) {
System.out.println("Победила команда " + team1 + " набравшая " + avgResultTeam1 + " очков");
} else {
System.out.println("Победила команда " + team2 + " набравшая " + avgResultTeam2 + " очков");
}
scanner.close();
}
public static int getValue(){
Scanner scanner = new Scanner(System.in);
int value=scanner.nextInt();
return value;
}
}
