0

私は Java プログラミングの初心者で、ポーカー ハンド エバリュエーターを作ろうとしています。for ループを使用して、カードのスーツと価値を尋ねています。何らかの理由で、for ループの最初の反復では機能しますが、その後は 1 つの値しか要求されません。これが私のコードです:

import java.util.Scanner;
public class PokerRun {

public static void main(String[] args) {

    int [] suit = new int[5];
    int [] value = new int[20];
    Card card1 = new Card();
    Scanner in = new Scanner(System.in);
    int counter = 1;
    System.out.println("Welcome to the Poker Hand Evaluator!");
    for(int i = 1; i<6; i++)
    {
        System.out.println("What is the suit of card " + i + "?\nPlease type the suit in all lowercase letters: ");
        card1.suit = in.nextLine();
        System.out.println("What is the value of card " + i + "?  (J = 11, Q = 12 K = 13, A = 14");
        card1.value = in.nextInt();
        //checks if face card, if true, then changes card.facecard
        if(card1.value == 11)
            card1.facecard = "Jack";
        else if(card1.value == 12)
            card1.facecard = "Queen";
        else if(card1.value == 13)
            card1.facecard = "King";
        else if(card1.value == 12)
            card1.facecard = "Ace";

        if(card1.value<11)
            System.out.println("You entered a " + card1.value + " of " + card1.suit + ".");
        else
            System.out.println("You entered a " + card1.facecard + " of " + card1.suit + ".");
    }

}

}
4

2 に答える 2

2

Rohit Jain はい、まさにその問題です。

解決策の私の提案は、ラインを交換することです

card1.value = in.nextInt();

と:

card1.value= Integer.parseInt(in.nextLine());

これはうまくいくはずです。

もう少し説明すると、スキャナーはファイルの文字列解析などのために構築されました。コマンドライン入力にはあまり適していません。私は BufferedReader を使用します:

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
reader.readLine();
于 2013-07-25T14:27:11.560 に答える