Задача при вводе данных
Напишите программу: вводим два целочисленных числа и должны увидеть в консоли сумму этих двух чисел умноженную на три с защитой от пользователя (методы: hasNextInt(), hasNextDouble() и тд). Вот такую задачу я получил и нужно с помощью класса Scanner сделать эту задачу.
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
if (scan.hasNextInt()) {
int a = scan.nextInt();
if (scan.hasNextInt()) {
int b = scan.nextInt();
int result = (a + b) * 3;
System.out.println(result);
}
} else {
System.out.println("Введите пожалуйста целое число");
}
}
}
Если вводим первый раз или второй раз не целое число, то должно выводиться в консоль: Введите пожалуйста целое число. Но у меня не получается, подскажите как написать чистый код, а у то у меня какой-то говно код получается
Ответы (3 шт):
Попробуйте етот код:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a, b, result;
if(scan.hasNextInt()){
a = scan.nextInt();
if(scan.hasNextInt()){
b = scan.nextInt();
result = (a+b)*3;
System.out.println(result);
}else{
System.out.println("Введите пожалуйста целое число");
}
}else{
System.out.println("Введите пожалуйста целое число");
}
}
}
Посетите наш сайт, если несложно: JEasily
Я бы сделал это так:
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a = getIntValueByScan(scan);
int b = getIntValueByScan(scan);
System.out.println((a + b) * 3);
}
private static int getIntValueByScan(Scanner scan) {
if (scan.hasNextInt()) {
return scan.nextInt();
}
throw new ArithmeticException("Введите пожалуйста целое число");
}
}
Здесь я вывел наследуемый от RuntimeException - ArithmeticException, если не требуется выводить ошибку в стектрейс, то верните sout
У меня получился следующий вариант:
public class Main {
public static void main(String[] args) {
showInfo("Введите первое целое число");
int firstNumber = getNumber();
showInfo("Введите второе целое число");
int secondNumber = getNumber();
showInfo("Результат (firstNumber + secondNumber) * 3 составил: "+calculate(firstNumber,secondNumber));
}
private static int getNumber() {
boolean numberIsCorrect = false;
int number = 0;
do{
try {
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
numberIsCorrect = true;
}catch (Exception e){
showInfo("Вы ввели не число, повторите попытку, необходимо ввести целое число");
}
} while (!numberIsCorrect);
return number;
}
public static void showInfo(String str){
System.out.println(str);
}
public static int calculate(int firstNumber, int secondNumber){
return (firstNumber + secondNumber) * 3;
}
}