英文:
How do I solve int cannot be converted to int[]?
问题
我创建了一个名为Mastermind的Java程序,用于一个名为Mastermind的棋盘游戏。我创建了Mastermind类并在我的主方法中调用它。我尝试从我创建的数组中输入数字,但在我尝试调用Mastermind时出现了找不到符号的错误。之后,我将它换成了其他内容,并将其声明为guessResult = Mastermind.attempt(guess[2])。现在我遇到了一个int无法转换为int[]的错误,我该如何解决这个问题?
英文:
I created a java program for a board game called Mastermind. I have created the class called Mastermind and called it in the my main method. I tried inputting numbers from the array I created but it giving me an error of it unable to find the symbol when I tried calling Mastermind. I switched it something else after and stated it as guessResult = Mastermind.attempt(guess[2]); . Now I have an error of int cannot be converted to int[]?, how do I solve this?
import java.util.Scanner;
public class MastermindGame
{
public static void main(String[] args)
{
//game instructions
System.out.print("Welcome to Mastermind!");
System.out.print("The computer will generate a passcode with your specified number of digits.");
System.out.print("Your job is to break that code!");
System.out.print("After each guess, the computer will tell you how many correct digits are in the correct position.");
System.out.print("It will do this by printing one X for each correct digit.");
System.out.print("It does not tell you which digit is correct.");
System.out.println("If you do not see any Xs print, none of your digits were correct.");
System.out.println("GOOD LUCK!");
//ask user to determine how many digits the code will be
System.out.println("How many digits would you like the code to be?");
//enable input from the user
Scanner in = new Scanner(System.in);
//read the integer the user types
int length = in.nextInt();
//create the new game with the indicated number of digits
Mastermind game = new Mastermind(length);
//ssshh!! cheating so we can see if this works!
System.out.println("Shhh! Just so we know if our program works, the code is ");
game.printCode();
//set up an array to hold the user's guesses
int[] guess = {1, 2, 3, 4};
//set up a String to display the result of the guess
String guessResult = " ";
//allow the user 4 tries to break the code
for (int j = 0; j < 4; j++)
{
//tell the user to take a guess
System.out.println("Gander a guess");
//loops as many digits (length) as they indicated the code should be
for (int i = 0; i < 4; i++)
{
//ask the user to input their guess for this digit
System.out.println(" What is the next digit for the code");
//store their guess in the guess array
guess[i] = in.nextInt();
}
//call the method in the Mastermind class that checks their guess against the code
guessResult = Mastermind(2);
//it will print out as many Xs as correct digits, order irrelevant
System.out.println ( guessResult);
//if the user guess, game over so end the main method with "return"
if (guessResult.equals("YOU WIN!!"))
return;
}
//if we get outside the loop, user wasn't able to guess, "game over"
System.out.println("~~~GAME OVER~~~");
}
}
class Mastermind
{
private int[] code;
//overloaded constructor
public Mastermind(int length)
{
//get the length of the array to the number of digits the user requested
code = new int[length];
//walk through the code
for (int i = 0; i < code.length; i++)
{
//add a random digit (0-2 in this case) to the code
code[i] = (int)(Math.random()*3 + 0);
}
}
//method to check the user's guess against the code
public String attempt(int[] guess)
{
String response = "";
boolean verify = true;
//walk through the guess array
for (int k = 4; k < 4; k++)
{
//compare guess array to code
//if digits are the same, add an X to response string
if (code == guess)
response += "X";
//if digits are not equal, set verify to false because the guess is not the code
else
verify = false;
}
//if verify was never set to false, then the user guessed correctly so return YOU WIN
if ( guess== code)
return "YOU WIN!!";
//if code gets here, user did not guess correctly, return the String with Xs for correct number of digits.
return "X";
}
//created this method so we can cheat to check that our game works
public void printCode()
{
String answer = "";
//walk through code, concatenating the digit to the answer string
for (int i = 0; i < code.length; i++)
{
answer += code[i] + " ";
}
//print the code
System.out.println(answer);
}
}
答案1
得分: 0
以下是您代码的翻译版本:
import java.util.Arrays;
import java.util.Scanner;
public class MastermindGame {
public static void main(String[] args) {
// 游戏说明
System.out.println("欢迎来到猜数字游戏!");
System.out.println("计算机将生成一个包含您指定位数的密码。");
System.out.println("您的任务是破解这个密码!");
System.out.println("在每次猜测后,计算机将告诉您有多少个正确的数字位于正确的位置。");
System.out.println("它将通过打印一个X来表示每个正确的数字。");
System.out.println("但它不会告诉您哪个数字是正确的。");
System.out.println("如果您没有看到任何X,表示您的猜测中没有任何正确的数字。");
System.out.println("祝您好运!");
// 询问用户确定密码有多少位
System.out.println("您想要密码有多少位?");
// 启用用户输入
Scanner in = new Scanner(System.in);
// 读取用户输入的整数
int length = in.nextInt();
// 使用指定位数创建新游戏
Mastermind game = new Mastermind(length);
// 嘘!为了测试我们的程序是否有效,密码是:
System.out.print("嘘!只是为了测试,密码是:");
game.printCode();
// 准备一个数组来存储用户的猜测
int[] guess = new int[length];
// 允许用户尝试4次来破解密码
for (int j = 0; j < 4; j++) {
// 告诉用户进行一次猜测
System.out.println("进行一次猜测");
// 循环与密码位数相同的次数
for (int i = 0; i < length; i++) {
// 要求用户输入他们猜测的数字
System.out.print("请输入密码的下一个数字:");
// 将他们的猜测存储在猜测数组中
guess[i] = in.nextInt();
}
// 调用Mastermind类中检查猜测是否正确的方法
int guessResult = game.attempt(guess);
if (guessResult < 0) {
System.out.println("您赢了!");
return;
} else {
System.out.print(" ");
for (int i = 0; i < guessResult; i++)
System.out.print("X");
System.out.print("\n\n");
}
}
// 如果退出循环,表示用户无法破解密码,游戏结束
System.out.println("~~~游戏结束~~~");
}
}
class Mastermind {
private final int[] code;
// 重载构造函数
public Mastermind(int length) {
// 根据用户请求的位数创建数组
code = new int[length];
// 遍历数组
for (int i = 0; i < code.length; i++) {
// 向密码添加一个随机数字(在0到2之间)
code[i] = (int) (Math.random() * 3 + 0);
}
}
// 用于检查用户猜测是否正确的方法
public int attempt(int[] guess) {
if (Arrays.equals(guess, code)) {
// 如果玩家赢了,返回-1
return -1;
} else {
int correctDigits = 0;
for (int i = 0; i < code.length; i++) {
if (code[i] == guess[i]) {
correctDigits++;
}
}
return correctDigits;
}
}
// 创建此方法,以便我们可以检查我们的游戏是否有效
public void printCode() {
StringBuilder answer = new StringBuilder();
// 遍历密码,将数字连接到答案字符串中
for (int j : code) {
answer.append(j);
answer.append(" ");
}
// 删除最后的空格
String answerString = answer.substring(0, answer.length() - 1);
// 打印密码
System.out.println(answerString);
}
}
英文:
Here is a functional version of your code:
import java.util.Arrays;
import java.util.Scanner;
public class MastermindGame {
public static void main(String[] args) {
// game instructions
System.out.println("Welcome to Mastermind!");
System.out.println("The computer will generate a passcode with your specified number of digits.");
System.out.println("Your job is to break that code!");
System.out.println("After each guess, the computer will tell you how many correct digits are in the correct position.");
System.out.println("It will do this by printing one X for each correct digit.");
System.out.println("It does not tell you which digit is correct.");
System.out.println("If you do not see any Xs print, none of your digits were correct.");
System.out.println("GOOD LUCK!");
// ask user to determine how many digits the code will be
System.out.println("How many digits would you like the code to be?");
// enable input from the user
Scanner in = new Scanner(System.in);
// read the integer the user types
int length = in.nextInt();
// create the new game with the indicated number of digits
Mastermind game = new Mastermind(length);
// ssshh!! cheating so we can see if this works!
System.out.print("Shhh! Just so we know if our program works, the code is ");
game.printCode();
// set up an array to hold the user's guesses
int[] guess = new int[length];
// allow the user 4 tries to break the code
for (int j = 0; j < 4; j++) {
// tell the user to take a guess
System.out.println("Gander a guess");
// loops as many digits (length) as they indicated the code should be
for (int i = 0; i < length; i++) {
// ask the user to input their guess for this digit
System.out.print(" What is the next digit for the code?\n ");
// store their guess in the guess array
guess[i] = in.nextInt();
}
// call the method in the Mastermind class that checks their guess against the code
int guessResult = game.attempt(guess);
if (guessResult < 0) {
System.out.println("YOU WIN!!");
return;
} else {
System.out.print(" ");
for (int i = 0; i < guessResult; i++)
System.out.print("X");
System.out.print("\n\n");
}
}
// if we get outside the loop, user wasn't able to guess, "game over"
System.out.println("~~~GAME OVER~~~");
}
}
class Mastermind {
private final int[] code;
// overloaded constructor
public Mastermind(int length) {
//get the length of the array to the number of digits the user requested
code = new int[length];
// walk through the code
for (int i = 0; i < code.length; i++) {
//add a random digit (0-2 in this case) to the code
code[i] = (int) (Math.random() * 3 + 0);
}
}
// method to check the user's guess against the code
public int attempt(int[] guess) {
if (Arrays.equals(guess, code)) {
// Return -1 if the player win
return -1;
} else {
int correctDigits = 0;
for (int i = 0; i < code.length; i++) {
if (code[i] == guess[i]) {
correctDigits++;
}
}
return correctDigits;
}
}
// created this method, so we can cheat to check that our game works
public void printCode() {
StringBuilder answer = new StringBuilder();
// walk through code, concatenating the digit to the answer string
for (int j : code) {
answer.append(j);
answer.append(" ");
}
// Remove the last space
String answerString = answer.substring(0, answer.length() - 1);
// print the code
System.out.println(answerString);
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论