【问题标题】:Error "actual and format arguments lists differ in length"错误“实际和格式参数列表的长度不同”
【发布时间】:2012-11-23 06:49:06
【问题描述】:

尽管我在整个网站上进行了研究,但我无法理解这个错误。起初程序运行,但它给了我一个 "y" 作为一行,验证器的选择是 "n","n","n" all in一。所以,我环顾了一下我的程序,找到了它,解决了它。现在我面临这个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;
    }
}

我做错了什么?我还将添加我的验证器代码,因为我认为问题在于这两者之间。

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

提前感谢您的帮助!

【问题讨论】:

    标签: java constructor compiler-errors validation


    【解决方案1】:

    Validator 类 中的 getRequiredString 方法 需要一个 String 参数,您传递了两个参数,String 和一个 Player(您应该但是在您的方法调用中出现另一个编译器错误,说找不到播放器,正如您注释掉的那样)。

    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
    

    只需从您的 方法调用 中传递 prompt,错误就会消失。

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

    【讨论】:

    • 赫帕德普就我而言。非常感谢你。是时候犯下一个错误了!继续!
    猜你喜欢
    • 2016-05-31
    • 2013-10-04
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    相关资源
    最近更新 更多