- ベストアンサー
Javaの引数を使ってチェックしていくプログラムですが
public class AAA{ public static void main(String args[]){ System.out.println("チェック開始"); int ContainerA,ContainerB,ContainerC; String PP = "Sweets"; if (args[0].length() != 1 ){ // 引数の数が1以外の場合 { ContainerA = 1; // 1をエラーコードに設定 } else if(!args[0].equalsIgnoreCase("cake") && !args[0].equalsIgnoreCase("manjyu")) //引数が CAKE でも MANJYU でもない場合(大/小文字区別せず) { ContainerC = 99; // 99をエラーコードに設定 } else // それ以外の場合 { ContainerB = 0; // 0をエラーコードに設定 } } else if(ContainerB == 0){ // もしエラーコードが0の場合 { System.out.println(PP + "?"); //("商品名+?")を表示 } if(ContainerA == 1) // エラーコードが1の場合 { System.out.println("プログラム終了"); } else if(ContainerC == 99){ // エラーコードが99の場合 System.out.println("プログラム終了"); } } else{ //それ以外の場合(正常終了処理) System.out.println("正常終了"); } } } 上記のソースはコンパイルできないのですが、どこがおかしいのでしょうか? また、条件分岐が ifやelseしか使い方がよくわからないので、他のよい方法がありましたら教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
・ 全角スペースは、プログラムの中で半角スペースとして使ってはいけません。 ・ 変数は、初期化するか必ず値が設定されるように、プログラムを組む必要があります。 public class AAA { public static void main(String args[]) { System.out.println("チェック開始"); int ContainerA = -1, ContainerB = -1, ContainerC = -1; String PP = "Sweets"; if (args[0].length() != 1) { // 引数の数が1以外の場合 ContainerA = 1; // 1をエラーコードに設定 } else if (!args[0].equalsIgnoreCase("cake") && !args[0].equalsIgnoreCase("manjyu")) // 引数が CAKE でも MANJYU // でもない場合(大/小文字区別せず) { ContainerC = 99; // 99をエラーコードに設定 } else // それ以外の場合 { ContainerB = 0; // 0をエラーコードに設定 } if (ContainerB == 0) { // もしエラーコードが0の場合 { System.out.println(PP + "?"); // ("商品名+?")を表示 } if (ContainerA == 1) // エラーコードが1の場合 { System.out.println("プログラム終了"); } else if (ContainerC == 99) { // エラーコードが99の場合 System.out.println("プログラム終了"); } } else { // それ以外の場合(正常終了処理) System.out.println("正常終了"); } } }
その他の回答 (2)
- auty
- ベストアンサー率58% (284/486)
以下のコードを参考にしてみてください。 ------------------------------------------------------------ public class AAA { public static void main(String args[]) { System.out.println("チェック開始"); int errorCode = -1; String PP = "Sweets"; if (args.length != 1) { // 引数の数が1以外の場合 errorCode = 1; // 1をエラーコードに設定 } else if (!args[0].equalsIgnoreCase("cake") && !args[0].equalsIgnoreCase("manjyu")) { errorCode = 99; // 99をエラーコードに設定 } else { errorCode = 0; // 0をエラーコードに設定 } if (errorCode == 0) { System.out.println(PP + "?"); // ("商品名+?")を表示 System.out.println("プログラム終了"); } else { // それ以外の場合(正常終了処理) System.out.println("正常終了"); } } }
お礼
ありがとうございます。 できました~。
- ibe_tattsu
- ベストアンサー率70% (36/51)
引数の数は「args.length」で求まります。 「args[0].length」だと「最初の引数となる文字列の長さ」になってしまいます。 実際に引数に何も渡さず実行してみてください。 引数が0個だとエラーとかではなく、例外が発生するはずです。
補足
できました。ありがとうございます。 追記したい質問があるのですが このエラーコードを入れる変数を1つにして、 同様の動作をさせたいのですが、 どのように組み替えればよいか、よくわからないので どなたかご教授いただけないでしょうか?
補足
ありがとうございます。 コンパイルはできるようになりましたが、 実行の時、引数に何をいれてもエラーにならず、正常終了になってしまいます。 どうすればよいのでしょう?