Enum型を使用して入力値のチェックを実施しようとしています。
例えば入力値として季節(SUMMER,WINTER,SPRING,FALL)だったらOKとする場合、
どのようにすれば良いでしょうか?args[0]が入力値とした場合。

enum Status { SUMMER, WINTER, SPRING,FALL;}

■やりたいこと(定数の場合)
private static void String SUMMER="SUMMER";
private static void String WINTER="WINTER";
private static void String SPRING="SPRING";
private static void String FALL="FALL";

if(SUMMER.equals(args[0]) || WINTER.equals(args[0])
|| SPRING.equals(args[0]) || FALL.equals(args[0])){
 // OK
} else {
 // NG
}

A 回答 (1件)

try {


Status s = Enum.valueOf(Status.class, args[0]);
System.out.println("OK! : " + s.toString());
} catch (IllegalArgumentException e) {
System.out.println("NG!");
}

使用した各メソッドの詳細はAPIリファレンスを参照してください。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QInteger.parseInt()について public static void main(String[] args) { int a =

初歩的な質問だと思うのですが、、、

public class TestTree {

public static void main(String[] args) {

int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);

GreatTree myTree = new GreatTree(a, b);
myTree.makeTree();
myTree.makeGround();
}

}

というプログラムについて、Integer.parseInt()はどういう意味を持つのかがわかりません。ただ適当につけた名前だとは思えないです。教えてもらえたら幸いです。お願いします。

Aベストアンサー

> argsで入力されたものは例え数字でも文字列として扱われているから、それをintにしている。ということですよね?

引数として (String[] args) と設定されていますので、
おっしゃるとおり 引数 args[]配列に入っているものは、文字列です。

ポイントは、 「String[]」でしょうか。。

Qpublic static void main(String args

public static void main(String args[]) {

public static void main(String[] args) {
は何が違います?

Aベストアンサー

何も違いません。

javaでは配列を宣言する時に、型の後ろに[]をつけても
変数名の後ろに[]を付けてもどちらでもいいことになっています。

Qprivate voidなメソッドはstatic コンテキストですか

コンパイルエラーで、
「static コンテキストから参照することはできません」
と表示されます。
ソースにstaticという文字は有りません。
private voidなメソッドはstatic コンテキストですか?

[Foo.java]
import com.nttdocomo.ui.*;
public class Foo extends IApplication {
 public void start() {
  Display.setCurrent(new MyPanel());
 }
}
class MyPanel extends Panel {
 private void e() {
  Bar.DShow(Dialog.DIALOG_ERROR, "", "");
 }
}

[Bar.java]
import com.nttdocomo.ui.*;
public class Bar {
 public void DShow(int type, String title, String body) {
  Dialog d = new Dialog(type, title);
  d.setText(body);
  d.show();
 }
}

コンパイルエラーで、
「static コンテキストから参照することはできません」
と表示されます。
ソースにstaticという文字は有りません。
private voidなメソッドはstatic コンテキストですか?

[Foo.java]
import com.nttdocomo.ui.*;
public class Foo extends IApplication {
 public void start() {
  Display.setCurrent(new MyPanel());
 }
}
class MyPanel extends Panel {
 private void e() {
  Bar.DShow(Dialog.DIALOG_ERROR, "", "");
 }
}

[Bar.java]
import com.nttd...続きを読む

Aベストアンサー

こんにちは。

>Display.setCurrent(new MyPanel());
setCurrentはstaticメソッドです。
ここで引っかかってるのではないでしょうか。

Qpublic static void main (String args[])

基本すぎて申し訳ありませんが、
public static void main (String args[])とはどういう意味を持っていますか?
教えてください。。

Aベストアンサー

staticとかの意味はNo1の方の説明以外にありません。

mainは最初に実行されるメソッドという説明がされますので、「クラスを実行する時の引数とは?」と引っかかっているのかもしれませんね。
これはコマンドライン引数と呼ばれます。

たとえば、次のプログラム

public class ArgsTest{
  public static void main(String[] args){
    System.out.println(args.length);
    for(int i = 0 ; i < args.length ; i++){
      System.out.println(args[i]);
    }
  }
}

これを
>java ArgsTest abcde fghij(エンター)
として実行するとabcdeとfghijが引数となります。

ちなみに、mainはpublicでstaticなメソッドなので、
public class ArgsTest2{
  public static void main(String args[]){
    tamesi();
  }
  void tamesi(){
    String[] test = {"abcde","fghij"};
    ArgsTest.main(test);
  }
}
のように、外部のクラスからクラス名.mainで呼び出せます。(この2つのプログラムは、私が悩んだ時に試しにつくったものです)

ちなみにargsはarguments(=引数)の略で、mainの引数として、よく使われます。
argvのほうはargument valueの略です。C言語を使っていた人の中にはargvを使う人がいるかもしれません。

staticとかの意味はNo1の方の説明以外にありません。

mainは最初に実行されるメソッドという説明がされますので、「クラスを実行する時の引数とは?」と引っかかっているのかもしれませんね。
これはコマンドライン引数と呼ばれます。

たとえば、次のプログラム

public class ArgsTest{
  public static void main(String[] args){
    System.out.println(args.length);
    for(int i = 0 ; i < args.length ; i++){
      System.out.println(args[i]);
    }
  }
}

...続きを読む

Qprivate static という変数の修飾

お世話になります。

private static final String HOGE = "hoge";

という変数(finalなので定数ですが)があるとします。このような、privateでstaticな変数というのは、どのような使われ方を意図しているのでしょうか?privateな変数がstaticである必要は、どのようなときに生じるのでしょうか?

よろしくご教授ください。

Aベストアンサー

 その private な変数が所属するクラス自身がいくつも定義された場合に、プログラム全体で1つのメモリしか確保されなくなります。
 なんで、メモリ量がものすげー切羽詰ってるときとか、ほんの数バイトでも節約した方がいい気がするときに有効です。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報