1

このウェブサイト全体で調査したにもかかわらず、このエラーを理解することはできません。最初はプログラムが実行されましたが、行として「y」が表示され、バリデーターの選択肢は「n」、「n」、「n」のすべてが1つでした。それで、私は自分のプログラムを見て回って、それを見つけて、それを解決しました。今、私はこのactual and format arguments lists differ in length問題に直面しています。変数の型を変更したり、さまざまな変数を使用したりするなど、さまざまなことを試しました。

これが私のコードです。

 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package roshambo;

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

/**
 *
 * @author Owner
 */
public class Roshambo {


    private String name;

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        String choice = "y";
        String player;

        Scanner sc = new Scanner(System.in);
        Random random = new Random();
        char[] ch = new char[]{'r','p','s'};
        int r = random.nextInt(ch.length);
        char raCh = ch[r];

        while (choice.equalsIgnoreCase("y")) {
            System.out.println("Welcome to Roshambo!");
            System.out.println("");

            //System.out.print("Please enter your name here - ");
            //String player = sc.nextLine();

            String player1 = Validator.getRequiredString("Please enter your name here - ",player);

            String roshambo = sc.nextLine();
            String roshambo1 = Validator.getChoiceString1("Please choose Rock, Paper or Scissors. (R/P/S) - ",'r','p','s');


            choice = getChoiceString("Play Again? (y/n): ","y","n");
            System.out.println("");
        }
    }
    public static String getChoiceString(String prompt, String str1, String str2)
    {
        boolean isValid = false;
        Scanner sc = new Scanner(System.in);
        String choice = "";

        while (isValid == false) {
        System.out.print(prompt);
        choice = sc.next();
        if (choice.equalsIgnoreCase(str1) || choice.equalsIgnoreCase(str2)) {
            isValid = true;

        }
        sc.nextLine();

        }
        return choice;
    }
}

私は何が間違っているのですか?問題はこれら2つの間にあると思うので、バリデーターコードも追加します。

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package roshambo;

import java.util.Scanner;

/**
 * @author Owner
 */
public class Validator {

    // force the user to enter a string
    public static String getRequiredString(String prompt) {
        Scanner sc = new Scanner(System.in);
        String input = "";
        boolean isValid = false;

        while (isValid == false) {
            System.out.print(prompt);
            input = sc.nextLine();
            if (input.equals("")) {
                System.out.println("Error! This entry is required. Try again.");
            }
            else {
                isValid = true;
            }
        }
        return input;
    }
    // force the user to enter one of three strings
    public static String getChoiceString1(String prompt, String str1, String str2, String str3) {
        String input = "";
        boolean isValid = false;

        while (isValid == false) {
            input = getRequiredString(prompt);
            if (input.equalsIgnoreCase(str1) || input.equalsIgnoreCase(str2) || input.equalsIgnoreCase(str3)) {
                isValid = true;
            }
            else {
                System.out.println("Error! Entry must be '"+ str1 +"', '"+ str2 +"', or '"+ str3 +"'. Try again.");  
            }
        }
        return input;
    }
}

助けてくれてありがとう!

4

1 に答える 1

1

Validator クラスの getRequiredStringメソッドは、単一のString 引数を想定しています。メソッド呼び出しで、String と Player の 2 つの引数を渡しています (ただし、コメントアウトしたため、プレーヤーが見つからないという別のコンパイラ エラーが発生するはずです)。

public static String getRequiredString(String prompt) { // is pnly expecting one String argument.

    String player1 = Validator.getRequiredString("Please enter your name here - ",player);// passing two arguments

メソッド呼び出しからプロンプトを渡すだけで、エラーは消えます。

 String player1 = Validator.getRequiredString("Please enter your name here - ");
于 2012-11-23T06:51:30.903 に答える