2

ですから、質問は基本的なものです。java CommandLineDemo 3 5 *以下のコードでは、現在のディレクトリ内のファイル名が一覧表示されているため、コマンドライン引数を渡すと表示されます。Googleで調査を行ったところ、コマンドラインの*ように提供する必要があることがわかりました。'*'

私の質問は、'*'コマンドラインで受け入れてとの積を実行するoperand1ようにコードを変更するにはどうすればよいですか?operand2

class CommandLineDemo {
    public static void main(String[] args) {
        int operand1 = Integer.parseInt(args[0]);
        int operand2 = Integer.parseInt(args[1]);
        char theOperator = args[2].charAt(0);
        System.out.print(args[0] + args[2] + args[1] + " = ");
        switch(theOperator) {
            case ('+'):
                System.out.println(operand1 + operand2); break;
            case ('-'):
                System.out.println(operand1 - operand2); break;
            case ('*'):
                System.out.println(operand1 * operand2); break;
            case ('/'):
                System.out.println(operand1 / operand2); break;
            default:
                System.out.println("Invalid Operator selected");
        }
    }
}
4

3 に答える 3

1

以下の変更されたコードを使用して、コマンド ライン引数を単一の文字列 (例: "2 3 +") として渡すことができます。

import java.util.Arrays;

class CommandLineDemo {

    public static void main(String[] args) {

        String strArray = Arrays.toString(args);
        strArray = strArray.replace("[", "").replace("]", "").replaceAll("[, ]", "");
        String[] splits = strArray.split("");

        int operand1 = Integer.parseInt(splits[1]);
        int operand2 = Integer.parseInt(splits[2]);
        char theOperator = splits[3].charAt(0);

        System.out.print(splits[1] + " " + splits[3] + " " + splits[2] + " = ");

        switch(theOperator) {
            case ('+'):
                System.out.println(operand1 + operand2); break;
            case ('-'):
                System.out.println(operand1 - operand2); break;
            case ('*'):
                System.out.println(operand1 * operand2); break;
            case ('/'):
                System.out.println(operand1 / operand2); break;
            default:
                System.out.println("Invalid Operator selected");
        }
    }
}

使用法と出力は次のようになります。

C:\Users\sarath_sivan\Desktop>java CommandLineDemo "2 3 +"
2 + 3 = 5

C:\Users\sarath_sivan\Desktop>java CommandLineDemo "2 3 -"
2 - 3 = -1

C:\Users\sarath_sivan\Desktop>java CommandLineDemo "2 3 *"
2 * 3 = 6

C:\Users\sarath_sivan\Desktop>java CommandLineDemo "2 3 /"
2 / 3 = 0

C:\Users\sarath_sivan\Desktop>java CommandLineDemo "2 3 a"
2 a 3 = Invalid Operator selected

C:\Users\sarath_sivan\Desktop>
于 2013-03-19T06:44:18.877 に答える
0

*はシェルのメタ文字であり、特別な意味を持つことを意味します。\No need to modified the code , instead just type \*to meanでエスケープする必要があります*

于 2013-03-19T04:45:54.987 に答える
0

プログラムを拡張する必要はありません。そのまま渡す*'*'は、シェル (より正確には、Linux シェル、Windows cmd :p についてほとんど知識がない) がファイル名展開を実行するためです。直接渡す*と、現在のディレクトリ内のすべてのファイルとして展開されます。'*'これを防ぎ*、コマンドライン引数としてプログラムに渡します。

于 2013-03-19T04:46:52.930 に答える