このウェブサイト全体で調査したにもかかわらず、このエラーを理解することはできません。最初はプログラムが実行されましたが、行として「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;
}
}
助けてくれてありがとう!