0

入力検証コードに問題があります。プロンプトが表示されたシード値を入力しますが、その後、選択したメニューを印刷するために別の有効な入力を入力する必要があります。メニューの選択肢の1つも選択するたびに発生します。

入力検証は、1 から 5 までの整数値のみを受け取ることになっています。そのため、誰かが文字、負の数、または範囲外の整数を入力すると、メニューの選択を続行できるように入力するよう求められます。

コードを間違って書いていますか?その不要な 2 番目の入力を取り除き、ゲームを続行するために必要なのは 1 つだけです。また、6 ~ 9 は無効としてカウントされますが、何らかの理由で 10 個の作品の後の値にも気付きます。なぜそれが機能するのかわかりません。ありがとう!

import java.util.Random;
import java.util.Scanner;

public class Sonowah
{

    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.print("Please enter a seed value [integer]: "); 
        //assume input is integer for seed for RNG
        int seed = in.nextInt(); 
        Random rng = new Random(seed); //RNG

        int charge = 100;

    //loop here
    while (charge > 0)
    {           
        int number;
        do 
        {
            while (!in.hasNextInt(5))
            {
                System.out.println("Please enter valid interger");
                in.next();
            }
            number = in.nextInt();
        } 
        while (number <= 0);
        System.out.println("Interger is valid!");


            System.out.println("1. Surrender");
        System.out.println("2. Defend");
        System.out.println("3. Fight");
            System.out.println("4. Charge");
            System.out.println("5. Potions");
            String menuchoice = in.next();

            if (menuchoice.equals("1"))
            {
                    statement
                }
4

2 に答える 2

1

ループで in.hasNextInt() を使用する必要はないと思います...すでにユーザーに数値を尋ねています。その数値が 1 から 5 の間であるかどうかを確認してください。 Scanner.hasNextInt(5) はユーザーに int を要求します。そして、それを基数 5 で解釈しようとします。ドキュメントを参照してください。

于 2012-10-05T22:47:23.273 に答える
0

ここにあなたの問題があります:

do 
{
    while (!in.hasNextInt(5))
    {
        System.out.println("Please enter valid interger");
        in.next();
    }
    number = in.nextInt();
} 
while (number <= 0);

基本的に、このコードはすべて、残りのプログラムコードのコンテキストでは役に立ちません。

于 2012-10-05T22:49:15.157 に答える