プロが教えるわが家の防犯対策術!

Javaのコマンドライン引数を使って四則演算をしようとしています。コードは次のようになっています。


public class Problem2 {
public static void main(String args[]) {

if(args.length != 3) {
System.out.println("コマンドライン引数は次のように指定してください。");
System.out.println("数値 四則演算子 数値");
System.exit(0);
}
if(args[1].equals("+")) {
System.out.println( Double.parseDouble(args[0]) + Double.parseDouble(args[2]));
} else if(args[1].equals("-")) {
System.out.println( Double.parseDouble(args[0]) - Double.parseDouble(args[2]));
} else if(args[1].equals("x")) {
System.out.println(Double.parseDouble(args[0]) * Double.parseDouble(args[2]));
} else if(args[1].equals("/")) {
System.out.println(Double.parseDouble(args[0]) / Double.parseDouble(args[2]));
}else if (args[2].equals(0) && args[1].equals("/")) {
System.out.println("0で割ることはできません");
}
}
}

このコードのときargs[2]を0, args[1]を("/")にした時に実行すると"0で割ることはできません"と出力したいのですがInfinityと出力されてしまいます。どのようにしたら"0で割ることはできません"と出力できるようになるのかが分かりません

A 回答 (3件)

「args[2].equals(0)」がどのような値を返すか, 理解していますか?

    • good
    • 0

「先にしてしみました」コードを見せてください.

    • good
    • 0
この回答へのお礼

public class Problem2 {
public static void main(String args[]) {

if(args.length != 3) {
System.out.println("コマンドライン引数は次のように指定してください。");
System.out.println("数値 四則演算子 数値");
System.exit(0);
}

if(args[2].equals(0) && args[1].equals("/")) {
System.out.println("0で割ることはできません");
}
if(args[1].equals("+")) {
System.out.println( Double.parseDouble(args[0]) + Double.parseDouble(args[2]));
} else if(args[1].equals("-")) {
System.out.println( Double.parseDouble(args[0]) - Double.parseDouble(args[2]));
} else if(args[1].equals("x")) {
System.out.println(Double.parseDouble(args[0]) * Double.parseDouble(args[2]));
} else if(args[1].equals("/")) {
System.out.println(Double.parseDouble(args[0]) / Double.parseDouble(args[2]));
}
}
}

お礼日時:2020/07/07 23:25

0で割ることはできませんの判定を、割り算の判定よりも先に行えばOKですよ。

    • good
    • 0
この回答へのお礼

へこむわー

先にしてしみましたが、Infinityのままでした

お礼日時:2020/07/07 22:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!