Java - 代码不断返回 'error: incompatible types: Object cannot be converted to int'

标签 java arraylist

在我的代码中,我试图将数组列表的最后一个元素与随机数进行比较,但我不断收到错误“不兼容的类型:对象无法转换为 int”。我似乎无法找到解决方案。该问题出现在 boolean 类“checkLastGuess”处。

import java.util.Scanner;
import java.util.Random;
import java.util.ArrayList;

public class GuessingGame
{
    int numToGuess = new Random().nextInt(10);
    ArrayList guesses = new ArrayList();

    void getGuess() 
    {
        Scanner keyboard = new Scanner(System.in);
        boolean valid = false;
        int userGuess = 0;

        while (valid == false)
        {
            System.out.print("What is your guess: ");
            String num = keyboard.next();
            char new_num = num.charAt(0);
            if (Character.isDigit(new_num))
            {
                userGuess = Integer.parseInt(num);

                if (userGuess >= 0 && userGuess < 10)
                {
                    guesses.add(userGuess); 
                    valid = true; 
                }
                else
                {
                    System.out.println("Invalid guess, please enter a number between 0 and 9.");
                }
            }
            else
            {
                System.out.println("Invalid guess, please enter digit.");
            }
        }
    }

    void printGuesses() {
        int list_length = guesses.size(); 
        System.out.print("Your guesses: ");

        for (int counter = 0; counter < list_length; counter++)
        {
            System.out.print(guesses.get(counter) + " ");

        }
        System.out.println();
    }
    boolean checkLastGuess()
    {
        int numToTest = guesses.get(guesses.size()-1);
        if (numToTest == numToGuess) 
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

然后通过以下测试程序运行代码

public class GuessingGameTest {
    public static void main(String[] args) {
        GuessingGame game = new GuessingGame();
        System.out.println("Number to guess: " + game.numToGuess);
        boolean guessedNumber = false;

        while (!guessedNumber) {
            game.getGuess();
            guessedNumber = game.checkLastGuess();
        }
    }

}

最佳答案

您没有正确初始化数组列表。改变

ArrayList guesses = new ArrayList();

ArrayList<Integer> guesses = new ArrayList<Integer>();

Arraylist 是通用的 ( ArrayList<E> ),因为它们需要在其构造中指定一个对象,以便您知道 arraylist 中的内容。

关于Java - 代码不断返回 'error: incompatible types: Object cannot be converted to int',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42015248/

相关文章:

java - android 类未找到

java - 将数据传递到 jquery 的 getJSON() 时出现问题 - 不接受 map

java - 在java中使用foreach循环时出现奇怪的错误

java 按当前日期排序列表,然后按日期比较

java - 为什么我无法使用方法返回的列表引用添加元素

java - 使用 javaFX 连接点

java - token 向前看的语法限制

Java找不到我的类

java - 形状数组列表

android - ArrayList<T> 中更快的项目