-1
import java.io.*;
public class Test {
public static int ReadInt1(){
int x;
try {
x = (int)System.in.read();
return x;
}catch (IOException e) {
System.out.println("Exception: " + e.toString());
return 0;
}catch (NumberFormatException e) {
System.out.println("Exception: " + e.toString() + "\nReturned value: -1");
return-1;
}
}
public static int ReadInt2(){
int y;
try {
y = (int)System.in.read();
return y;
}catch (IOException es) {
System.out.println("Exception: " + es.toString());
return 0;
} catch (NumberFormatException es) {
System.out.println("Exception: " + es.toString() + "\nReturned value: -1");
return-1;
}
}
public static int ReadInt3(){
int z;
try {
z = (int)System.in.read();
return z;
}catch (IOException ed) {
System.out.println("Exception: " + ed.toString());
return 0;
} catch (NumberFormatException ed) {
System.out.println("Exception: " + ed.toString() + "\nReturned value: -1");
return-1;
}
}
public static void main(String args[]){
System.out.println("Type a number1");
int x = ReadInt1();
System.out.println("Type a number2");
int y = ReadInt2();
System.out.println("Type a number3");
int z = ReadInt3();
if (x-3*z !=0){
System.out.println((3*(x-2)*y)/(x-3*z));
}else throw new ArithmeticException();
}
}
私がしたいのは、3 int型を入力し、int型であるかどうかをチェックしてから、(3 *(x-2)* y)/ x-3 * z)である。問題は、最初の数値1を入力した後で、プログラムが '数値2と3を入力する'というint値ではない場合、数値を与えて結果を出力できないということです。 2. int型の場合は、「数値2を入力してください」と表示されます。 「数値を入力してください.3」と入力して番号を入力します。私はまた、どのようにプログラマーがそれらの結果を思い付くのか知りません。タイプと印刷結果の3つの整数値を確認する
これは私が変更したものです: 'byte b2 [] = new byte [16]; 文字列str2; try { System.in.read(b2); str2 =(新しい文字列(b2))。trim(); 戻り値Integer.parseInt(str2); ' – FloatsAreFun
@FloatsAreFunこれは、整数を入力する間に一時停止する場合にのみ機能します。ファイルからの入力をリダイレクトした場合はうまくいかないでしょう。実際にテキストが必要なときにコンソールをバイナリとして読むことは、あなたが何をしていてもエラーが発生しやすく、複雑すぎることになります。 –