Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “错误”;“实际参数和格式参数列表长度不同”;_Java_Constructor_Compiler Errors_Validation - Fatal编程技术网

Java “错误”;“实际参数和格式参数列表长度不同”;

Java “错误”;“实际参数和格式参数列表长度不同”;,java,constructor,compiler-errors,validation,Java,Constructor,Compiler Errors,Validation,我无法理解这个错误,尽管我在整个网站上进行了研究。起初程序运行,但它给了我一个“y”作为一行,验证器的选择是“n”、“n”、“n”合一。所以,我在我的程序里四处看看,找到了它,解决了它。现在我面临这个实际参数和格式参数列表长度不同的问题。我尝试过各种方法,比如改变变量类型,使用不同的变量。。。诸如此类 这是我的密码 /* * To change this template, choose Tools | Templates * and open the template in the ed

我无法理解这个错误,尽管我在整个网站上进行了研究。起初程序运行,但它给了我一个“y”作为一行,验证器的选择是“n”、“n”、“n”合一。所以,我在我的程序里四处看看,找到了它,解决了它。现在我面临这个
实际参数和格式参数列表长度不同的问题。我尝试过各种方法,比如改变变量类型,使用不同的变量。。。诸如此类

这是我的密码

 /*
 * 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;
    }
}
我做错了什么?我还将添加我的验证器代码,因为我认为问题在于这两者之间

/*
 * 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;
    }
}

提前感谢您的帮助

您的验证程序类中的getRequiredString方法需要一个字符串参数,您在方法调用中传递了两个参数,字符串和播放器(不过,您应该会得到另一个编译器错误,如您注释掉的那样,说找不到播放器)

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 - ");

验证程序类
中的getRequiredString方法需要一个字符串参数,您在方法调用中传递了两个参数,字符串和一个播放器(不过,您应该会收到另一个编译器错误,如您注释的那样,说找不到播放器)

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 - ");

是我的错。非常感谢你。是时候犯下一个错误了!向前!是我的错。非常感谢你。是时候犯下一个错误了!向前!