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