gpt4 book ai didi

java - 错误 "actual and format arguments lists differ in length"

转载 作者:太空宇宙 更新时间:2023-11-04 07:56:38 25 4
gpt4 key购买 nike

尽管我对这个网站进行了研究,但我无法理解这个错误。一开始程序运行了,但它给了我一个“y”作为一行,而 validator 的选择是“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;
}
}

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

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

预先感谢您的帮助!

最佳答案

您在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

只需从方法调用中传递提示,错误就会消失。

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

关于java - 错误 "actual and format arguments lists differ in length",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13524310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com