Int field as string

Asked

Viewed 91 times

1

I’m working on a code for a college job, but I’m having problems, although the "home" is set to INT, netbeans continues to present:

"incompatible types: String cannot be converted to int"

below follows the code, from now on, thank you very much!

package tictactoe;

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

/**
 *
 * @author Leonardo
 */
public class Main {

    private static String tipoJogo;
    private static Random rand = new Random();
    private static int  n = rand.nextInt(9) + 1;
    private static int casa;
    public static void main(String[] args) {
        Scanner carrega = new Scanner(System.in);

        System.out.println("Bem vindo!");
        System.out.println("Insira o tipo de Jogo");
        tipoJogo = carrega.next();

        int valida = 0,
                jogadas = 0;

        jogo jogo = new jogo();


        switch (tipoJogo) {

            case "humano":

                while (true) {
                    System.out.println("teste teste");

                    do {
                        jogo.varTabu();
                        System.out.printf("Primeiro Jogador, ensira sua "
                                + "jogada nas casas de 1 a 9 \n\r");
                        casa = carrega.next();
                        while (!jogo.ok(casa)) {
                            System.out.print("Casa já escolhida, tente outra!");
                            System.out.printf("Primeiro Jogador, ensira sua "
                                    + "jogada nas casas de 1 a 9");
                            casa = carrega.next();
                            valida = 0;

                        }
                        jogo.jogada(casa, "O");
                        valida = 1;

                    } while (valida == 0);
                    jogadas++;
                    valida = 0;
                    if (!jogo.ganhador(jogadas).equals("null")) {
                        break;
                    }
                    do {
                        jogo.varTabu();
                        System.out.printf("Segundo Jogador, ensira sua "
                                + "jogada  nas casas de 1 a 9\n\r");
                        casa = carrega.next();
                        while (!jogo.ok(casa)) {
                            System.out.print("Casa já escolhida, tente outra!");
                            System.out.printf("Segundo Jogador, ensira sua "
                                    + "jogada /n/r nas casas de 1 a 9");
                            casa = carrega.next();
                            valida = 0;

                        }
                        jogo.jogada(casa, "X");
                        valida = 1;

                    } while (valida == 0);
                    jogadas++;
                    valida = 0;
                    if (!jogo.ganhador(jogadas).equals("null")) {
                        break;
                    }
                }
                jogo.varTabu();
                System.out.printf("O campeão foi o " + jogo.ganhador(jogadas));
                break;
            case "cFacil":

                while (true) {
                    System.out.println("teste teste");

                    do {
                        jogo.varTabu();
                        System.out.printf("Primeiro Jogador, ensira sua "
                                + "jogada nas casas de 1 a 9 \n\r");
                        casa = carrega.next();
                        while (!jogo.ok(casa)) {
                            System.out.print("Casa já escolhida, tente outra!");
                            System.out.printf("Primeiro Jogador, ensira sua "
                                    + "jogada nas casas de 1 a 9");
                            casa = carrega.next();
                            valida = 0;

                        }
                        jogo.jogada(casa, "O");
                        valida = 1;

                    } while (valida == 0);
                    jogadas++;
                    valida = 0;
                    if (!jogo.ganhador(jogadas).equals("null")) {
                        break;
                    }
                    System.out.println("pudim");

                    break;
                }
                /* inicio parte computador           
                //////////////////////////////////
                //////////////////////////////////
                //////////////////////////////////
                /////////////////////////////////                
                 */
                do {
                    jogo.varTabu();

                    System.out.printf("Segundo Jogador, ensira sua "
                            + "jogada  nas casas de 1 a 9\n\r");
                    n = carrega.next();
                    while (!jogo.ok(casa)) {
                        System.out.print("Casa já escolhida, tente outra!");
                        System.out.printf("Segundo Jogador, ensira sua "
                                + "jogada /n/r nas casas de 1 a 9");
                        casa = carrega.next();
                        valida = 0;

                    }
                    jogo.jogada(casa, "X");
                    valida = 1;

                } while (valida == 0);
                jogadas++;
                valida = 0;
                if (!jogo.ganhador(jogadas).equals("null")) {
                    break;
                }
                break;
        }
        jogo.varTabu();
        System.out.printf("O campeão foi o " + jogo.ganhador(jogadas));

    }
}
  • It should be time to take the input value that comes as a string. Try giving an Integer.parseint(home) to see if it works.

  • could you tell me which part of the code I should insert: "Integer.parseint(house)", I’m a little lost.

  • Already solved in the answer below :D .

1 answer

3

The method next() Scanner returns a string bounded to the first space. Therefore, you cannot assign this data entry capture in String to an int variable.

Change all the:

casa = carrega.next();

for:

casa = carrega.nextInt();

The line n = carrega.next(); will probably give this same problem, because n was declared int, make the same change to solve the problem.

Since there is a data capture loop, it is very likely that you have problems with leaking a line break of this call, take advantage and take a read in this question, should this occur.

References for reading:

Scanner class(Documentation)

Data Input: Scanner Class

  • Diegofm, excellent that really solved 90% of the problem, but the "home" field of the "while (!game.ok(house))" continues giving problem. http://i.stack.Imgur.com/gW7Mp.png

  • @Leonardolemgruber well, there seems to be another problem other than the question, would have to add this method jogo.ok() to analyze, but I suggest you create another question with the new doubt, not to invalidate the answer. You can click on v to accept this answer and to solve the cast problem and go to the new problem :)

  • @Leonardolemgruber The answer solved the int and string field problem?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.