У меня возникли проблемы с добавлением исключения String, чтобы предотвратить сбой моей программы при вводе строки вместо int. Я осмотрелся и попробовал try{}catch{}
, но моя программа все равно будет разбиваться на строку. Я ищу, чтобы исправить getInt().
Добавление исключения в java-программу
import java.util.*;
public class Binary{
public static void main(String[]args){
Scanner in = new Scanner(System.in);
String a = "";
boolean cont = true;
while(cont){
printb(convert(getInt(in, "Enter a number: ")));
System.out.println("Do you want to continue (yes or no)?");
a = in.next();
if(a.equals("yes"))
cont = true;
else{
System.out.println("You answerd no. Have a nice day.");
cont = false;
}
}
}
public static int getInt(Scanner console, String prompt){
System.out.print(prompt);
while(!console.hasNext()){
try{
console.next();
System.out.println("Not an integer, try again.");
System.out.print(prompt);
}
catch(Input MismatchException exception){
System.out.print("Not an integer, try again.");
System.out.print(prompt);
}
}
return console.nextInt();
}
public static int[] convert(int decimal){
int decimalCopy = decimal;
int len = 0;
while(decimal != 0){
decimal/=2;
len++;
}
decimal = decimalCopy;
int[] b = new int[len];
int index = 0;
while(decimal !=0){
if(decimal%2 != 0)
b[index] = 1;
else{
b[index] = 0;
}
decimal/=2;
index++;
}
return b;
}
public static void printb(int[] b){
for(int i = b.length-1; i>=0; i--){
System.out.print(b[i]);
}
System.out.println();
}
}
Где вы положили 'попробовать catch'? – AxelH
Я не думаю, что исключение является подходящим в случае плохого ввода. Возможно, вы ищете нечто вроде [this] (http://stackoverflow.com/a/8392032/770270), чтобы * проверять * ввод, а не бросать исключение для не исключительного поведения. – tnw
Возможный дубликат [Java Try Catch block] (http://stackoverflow.com/questions/35321312/java-try-catch-block) – AxelH