2017-02-03 10 views
1

In meinem Code versuche ich das letzte Element einer Array - Liste mit einer Zufallszahl zu vergleichen, aber ich bekomme den Fehler immer "inkompatibel" types: Objekt kann nicht in int konvertiert werden ". Ich kann keine Lösung finden. Das fragliche Problem tritt bei der booleschen Klasse 'checkLastGuess' auf.Java - Code gibt immer zurück Fehler: inkompatible Typen: Objekt kann nicht in int konvertiert werden

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; 
     } 
    } 
} 

Der Code wird dann lief durch das folgende Testprogramm

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(); 
     } 
    } 

} 
+3

Machen Sie Vermutungen eine 'ArrayList ' –

+0

in welcher Zeile die Fehler passieren? – Salman

+0

Der Fehler tritt in "int numToTest = guesses.get (ratess.size() - 1);" – mikecal7

Antwort

1

Sie sind nicht die Arraylist korrekt initialisiert wird. Ändern

ArrayList guesses = new ArrayList(); 

zu

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

Arraylisten generisch sind (ArrayList<E>), dass sie benötigen, um ein Objekt in ihrer Konstruktion angegeben werden, damit Sie wissen, was in der Arraylist ist.

Verwandte Themen