0

私はイントロJavaプログラミングコースを進めており、ifステートメントでやろうとしていることへの近道があるかどうか疑問に思っていました。

基本的に、私のプログラムはトランプの2文字の略語を受け取り、完全なカード名を返します(つまり、「QS」は「Queen ofSpades」を返します) 。

今私の質問は次のとおりです。if番号付きカード2〜10のステートメントを書くとき、番号ごとに個別のステートメントが必要ですか、それとも1つのifステートメントにまとめることができますか?

私のコードが整数であると言っているところを確認してください明らかにJava表記ではありません)。明確にするために私のコードの断片を次に示します。

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter the card notation: ");
        String x = in.nextLine();
        if (x.substring(0,1).equals("A")){
            System.out.print("Ace");
        }
        else if(x.substring(0,1) IS AN INTEGER) <= 10)){   // question is about this line
            System.out.print(x);
        }
        else{
            System.out.println("Error.");
        }
    }
}
4

3 に答える 3

5

代わりにこれを行うことができます:

    char c = string.charAt(0);
    if (Character.isDigit(c)) {
        // do something
    }

x.substring(0,1)とほとんど同じstring.charAt(0)です。違いは、charAtはaを返し、charsubstringは。を返すことStringです。

これが宿題ではなかった場合は、StringUtils.isNumeric代わりに使用することをお勧めします。あなたは言うことができるでしょう:

    if (StringUtils.isNumeric(x.substring(0, 1))) {
        System.out.println("is numeric");
    }
于 2013-01-20T03:42:35.053 に答える
1

文字列をintに変換する別の方法は次のとおりです。

Integer number = Integer.valueOf("10");

また、検討する可能性のある別のアプローチは、クラスまたは列挙型を使用することです。

public class Card {
    // Feel free to change this
    public char type; // 1 - 10, J, Q, K, A
    public char kind; // Spades, Hearts, Clubs, Diamonds

    public Card(String code) {
        type = code.charAt(0);
        kind = code.charAt(1);
    }

   public boolean isGreaterThan(Card otherCard) {
       // You might want to add a few helper functions
   }
}
于 2013-01-20T03:46:13.907 に答える
0

これは私が考えることができる最も簡単な解決策です:

private static Map<String, String> names = new HashMap<String, String>() {{
    put("A", "Ace"); 
    put("K", "King"); 
    put("Q", "Queen"); 
    put("J", "Jack"); 
}};

その後、あなたのメインで:

String x = in.nextLine();
if (x.startsWith("10")) { // special case of two-character rank
    System.out.print("Rank is 10");
} else if (Character.isDigit(x.charAt(0)){
    System.out.print("Rank is " + x.charAt(0));
} else
    System.out.print("Rank is: " + names.get(x.substring(0,1));
}
于 2013-01-20T03:45:45.863 に答える