Итак, я делаю свое первое объектно-ориентированное программирование, и при попытке и компиляции я прихожу с ошибкой:
winner = rps.pickWinner (userChoice, cpuChoice); // *** Ваш метод ^ required: no arguments found: String, String Причина: фактические и формальные списки аргументов различаются по длине Любая помощь была бы принята с благодарностью.Ошибка: фактические и формальные списки аргументов различаются по длине. Объектно-ориентированное программирование
import java.util.Scanner;
**strong text**public class KyleAbelWeek10 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
RockPaperScissors rps = new RockPaperScissors(); //***Your class
int numGames = 0;
String userChoice = "";
String cpuChoice = "";
String winner = "";
int userWins = 0;
int cpuWins = 0;
System.out.println("Welcome to Rock, Paper, Scissors!\n");
//Get odd number of games
System.out.println("How many rounds would you like to play?");
numGames = in.nextInt();
while (numGames % 2 == 0) //Even number
{
System.out.println("Sorry, number of games must be odd. Please try again:");
numGames = in.nextInt();
}
//Flush the buffer
in.nextLine();
//Play the game for the number of rounds the user entered
for (int i = 1; i <= numGames; i++) {
//Get the user and computer choices
userChoice = rps.getUserChoice(); //***Your method
cpuChoice = rps.getCPUChoice(); //***Your method
System.out.println("Computer chooses " + cpuChoice);
//Pick winner
winner = rps.pickWinner(userChoice, cpuChoice); //***Your method
if (winner.equalsIgnoreCase("Tie")) {
System.out.println("It's a tie! Play again.");
numGames++;
} else {
if (winner.equalsIgnoreCase("User")) {
userWins++;
} else if (winner.equalsIgnoreCase("Computer")) {
cpuWins++;
} else {
System.out.println("Error in picking winner");
}
System.out.println(winner + " wins!");
}
} //end for
//Print results
System.out.println("\nUser wins: " + userWins);
System.out.println("Computer wins: " + cpuWins);
if (userWins > cpuWins) {
System.out.println("\nThe user won!");
}
if (cpuWins > userWins) {
System.out.println("The computer won!");
}
//Close game
System.out.println("\nThank you for playing!");
} //end main
}
import java.util.*;
public class RockPaperScissors
{
public String getUserChoice()
{
//Utility
Scanner in = new Scanner(System.in);
//Variables
String userChoice = "";
System.out.println("Rock, Paper, or Scissors?:");
userChoice = in.nextLine();
while (!userChoice.equalsIgnoreCase("rock") && !userChoice.equalsIgnoreCase("paper") && !userChoice.equalsIgnoreCase("scissors"))
{
System.out.println("Sorry," + userChoice + " is not a valid entry.Please enter Rock, Paper, or Scissors.");
userChoice = in.nextLine();
}
return userChoice;
}
public String getCPUChoice()
{
//Get Random Number
Random r = new Random();
//Variables
int randomnumber = 0;
String cpuChoice = "";
//Make a random choice
randomnumber = r.nextInt(3)+1;
if (randomnumber == 1)
{
cpuChoice = ("rock");
}
if (randomnumber == 2)
{
cpuChoice = ("paper");
}
if (randomnumber == 3)
{
cpuChoice = ("scissors");
}
return cpuChoice;
}
public String pickWinner()
{
//Variables
String winner = "";
String userChoice = "";
String cpuChoice = "";
//Decide who wins the round
if (userChoice.equalsIgnoreCase("rock"))
{
if (cpuChoice.equalsIgnoreCase("scissors"))
{
winner = ("user");
}
else if (cpuChoice.equalsIgnoreCase("paper"))
{
winner = ("computer");
}
else
{
winner = ("tie");
}
}
else if (userChoice.equalsIgnoreCase("paper"))
{
if (cpuChoice.equalsIgnoreCase("scissors"))
{
winner = ("computer");
}
else if (cpuChoice.equalsIgnoreCase("rock"))
{
winner = ("user");
}
else
{
winner = ("tie");
}
}
else if (userChoice.equalsIgnoreCase("scissors"))
{
if (cpuChoice.equalsIgnoreCase("rock"))
{
winner = ("computer");
}
else if (cpuChoice.equalsIgnoreCase("paper"))
{
winner = ("user");
}
else
{
winner = ("tie");
}
}
return winner;
}
}
Некоторая терминология: «формальный» список параметров - это список параметров, которые вы пишете, когда вы определяете свой метод. «Фактический» список параметров - это список параметров, которые вы передаете при вызове метода. Если бы вы это знали, смысл сообщения об ошибке компилятора был бы очевиден. Надеюсь, это поможет в следующий раз. – ajb