@Qubbed

Как сделать так чтобы программа не крашилась при введении слов, а выводила надпись?

Как сделать в моей программе (код приложу в конце), когда ты вводишь слова вместо цифр программа в ответ выводит фразу: "Надо ввести цифры". Код самой программы:

package ffd;
import java.util.Scanner;
public class MaxMin {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		while(true) {  
		System.out.println("Введите два любых числа");
		Scanner sc = new Scanner(System.in);
		float i1 = sc.nextFloat();
		float i2 = sc.nextFloat();
		String str = sc.nextLine();
		
	    System.out.println("Большее из ваших чисел: " + Math.max(i1, i2));
		System.out.println("Меньшее из ваших чисел: " + Math.min(i1, i2));
		System.out.println("При сложении ваши числа дают: " + (i1+i2));
		System.out.println("При вычитании ваши числа дают: "+ (i1-i2));
		System.out.println("При умножении ваши числа дают: " + (i1*i2));
		System.out.println("При делении ваши числа дают: " + (i1/i2));
		if (i1 == 228) {
			System.out.println("Шо?");
		} else if (i2 == 228) {
			System.out.println("Шо?");
		} 
		
		}
  • Вопрос задан
  • 171 просмотр
Решения вопроса 1
@OneDollarMan
Изначально считывайте строку, затем парсите ее во float, отлавливая ошибку NumberFormatException конструкцией try-catch. В таком случае, если пользователь вводит буквы, то программа выводит предупреждение и продолжает работать.

package ffd;
import java.util.Scanner;

public class MaxMin {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("Введите два любых числа");
float i1 = 0;
float i2 = 0;
try {
String str1 = sc.nextLine(); //считываем строку
i1 = Float.parseFloat(str1); //парсим во float
String str2 = sc.nextLine();
i2 = Float.parseFloat(str2);
System.out.println("Большее из ваших чисел: " + Math.max(i1, i2));
System.out.println("Меньшее из ваших чисел: " + Math.min(i1, i2));
System.out.println("При сложении ваши числа дают: " + (i1+i2));
System.out.println("При вычитании ваши числа дают: "+ (i1-i2));
System.out.println("При умножении ваши числа дают: " + (i1*i2));
System.out.println("При делении ваши числа дают: " + (i1/i2));
if (i1 == 228) {
System.out.println("Шо?");
} else if (i2 == 228) {
System.out.println("Шо?");
}
} catch(NumberFormatException e) {
System.out.println("Надо ввести цифры!");
}
}
}

}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы