1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erros "bizonhos" em aplicação c/ String??

Olá. Sou iniciante em Java e estou tentando desenvolver um exercício que funciona da seguinte maneira: O usuário pensa em um número, digita um número que serve como valor máximo, e o programa " joga" um número na tela (como se fosse uma busca binária) e pergunta ao usuário se aquele número é maior, menor ou igual ao número imaginado, até adivinhar.

(penso no número 7)

Digite o valor maximo:

10

Seu numero e maior,igual ou menor que 5?

maior

Seu numero e maior,igual ou menor que 7? // (10 + 5)/2

igual

Consegui! Escreva continuar se quiser jogar de novo ou terminar se quiser parar

A ideia é essa. Meu problema está com o uso de Scanner/String. Durante a execução do programa, o usuário digitará diversos comandos. Para todos, estou tentando usar o mesmo objeto Scanner e o mesmo objeto String para armazenar o que ele ler.O problema é que ele só reconhece o 1º comando(no caso, o valor máximo), e quando eu digito o comando seguinte(Ex: maior), ele não reconhece o comando como válido e cai no "else" que preparei para o caso(que printa a seguinte mensagem: "favor inserir um comando valido")

O curioso é o seguinte:compilei com Netbeans pra ver o que acontecia com as variáveis. Bizarramente, mesmo a variável estando com o valor "menor", por exemplo, o if que verifica isso é tido como falso (??).E há também outra coisa estranha que acontece. A saída, a princípio, é essa:

Seu número é menor, igual ou maior que x?Favor inserir um comando válido.

Seu número é menor, igual ou maior que x?

para só então habilitar-me de inserir informação no programa.É como se, no "num = numero.nextLine();" da linha 24, ele não habilitasse a linha que me permite inserir informações, mas o faz após o programa " dar a volta" e voltar para a mesma linha.

Eis o código:

import java.util.Scanner;


class adivinhaNumero{

public static void main (String[] args){

Scanner numero = new Scanner(System.in);
boolean jogar = false;

jogo:
while (jogar == false){

System.out.println("Digite o valor maximo:");
String num = numero.next();
int n = Integer.parseInt(num);
int maior = n;
int menor = 0;

while(maior >= menor){
    System.out.println();
    System.out.print("Seu numero e maior,igual ou menor que " + (maior+menor)/2 + "?");
    num = numero.nextLine();
    if(num=="igual"){
        System.out.println ("Consegui! Escreva continuar se quiser jogar de novo ou terminar se quiser parar");
        num = numero.nextLine();
        if(num=="continuar") continue jogo;
        else{
            if(num=="terminar"){    
                System.out.print("Obrigado por jogar!");
                break jogo;
            }
            else System.out.print("favor inserir um comando valido");
        }
    }

    else{
        if(num=="menor"){
            maior = (maior+menor)/2;
            continue;
        }
        else{
            if(num=="maior"){
            menor = (maior+menor)/2;
            continue;
            }
            else System.out.print("favor inserir um comando valido");

        }
    }
}
}





}
}

Programa só reconhecendo os comandos na segunda passada, "ifs" de strings que não funcionam...(sim, se uso o método .equals() dá certo, mas ambas as formas deveriam funcionar perfeitamente).Minhas sinceras reverências se alguém conseguir me responder isso : /

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java testes linha-de-comando string ou faça a sua própria pergunta.