Ajuda JAVA - Iniciante

5 respostas
rodrigosan171

Bom dia caros colegas,

Estou criando alguns Hello Worlds aqui e estou com dificuldade no código abaixo... o Eclipse não encontra erro algum... mas ele fica em LOOPING no comando WHILE =S

O que poderia estar errado?

import java.util.Scanner;
public class retangulo {
	public static void main(String[] args){
		int base, altura, area, pergunta;
		String nome;
		
		
		Scanner entrada = new Scanner(System.in);
		
		System.out.println("Insira seu nome: ");
		nome = entrada.nextLine();
		
		System.out.println("");
		System.out.println("Olá " + nome + ", vamos calcular a ÁREA de um retângulo? (1-Sim | 2-Não)");
		pergunta = entrada.nextInt();
		
		
		do {
			System.out.println("Você deve inserir o número correspondente a opção desejada: ");
			System.out.println("1 (Sim) ou 2 (Não)");
			System.out.println("Você ainda deseja calcular a Área de um retângulo?");
			pergunta = entrada.nextInt();
		} while ((pergunta != 1 || pergunta != 2));
		
		if (pergunta == 1){
			System.out.println("Insira valor da BASE do retângulo: ");
			base = entrada.nextInt();
			System.out.println("Insira o valor da ALTURA do retângulo: ");
			altura = entrada.nextInt();
			
			area = (base*altura) / 2;
			
			System.out.println("A área do retângulo informado é: " + area);
		}
		
		System.out.println("Fim");
		}
}

Desde já agradeço a colaboração... :D

5 Respostas

E

Olá,

Tenta trocar o || por && do while.

de:

while ((pergunta != 1 || pergunta != 2)); 

por:

while ((pergunta != 1 && pergunta != 2));
davidbuzatto

Seu programa está com alguns erros de lógica... Olha ai o código consertado e algumas sugestões.

import java.util.Scanner;

// use letra maiúscula para nome de classe
public class Retangulo {  

    public static void main( String[] args ) {
    
        // declare uma variável por linha
        int base;
        int altura;
        int area;
        int pergunta;
        String nome;  
        
        Scanner entrada = new Scanner( System.in );  
        
        System.out.println("Insira seu nome: ");  
        nome = entrada.nextLine();  
        
        System.out.println("");  
        System.out.println("Olá " + nome + ", vamos calcular a area de um retangulo? (1-Sim | 2-Nao)");  
        pergunta = entrada.nextInt();  
        
        // deve verificar se pergunta é igual a 1 para ficar no loop
        while ( pergunta == 1 ) {  
        
            System.out.println("Insira valor da BASE do retângulo: ");  
            base = entrada.nextInt();  
            System.out.println("Insira o valor da ALTURA do retângulo: ");  
            altura = entrada.nextInt();  
            
            // sua fórmula estava errada (vc usou a do triângulo
            area = ( base * altura );  
            
            System.out.println("A área do retângulo informado é: " + area); 
            
            System.out.println("Você deve inserir o número correspondente a opção desejada: ");  
            System.out.println("1 (Sim) ou 2 (Nao)");  
            System.out.println("Você ainda deseja calcular a area de um retângulo?");  
            pergunta = entrada.nextInt();
            
        }  
        
        System.out.println("Fim").
            
    }
    
}
rodrigosan171

Caros(as) Colegas,

Muito obrigado pela colaboração!

Juntando as duas informações consegui rodar sem problemas meu Hello World!

Abaixo segue o resultado final:

import java.util.Scanner;

public class retangulo {
	
	public static void main( String[] args ){
		
		int base;
		int altura;
		int area;
		int pergunta;
		String nome;
				
		Scanner entrada = new Scanner(System.in);
		
		System.out.println("Insira seu nome: ");
		nome = entrada.nextLine();
		
		System.out.println("");
		System.out.println("Olá " + nome + ", vamos calcular a ÁREA de um retângulo? (1-Sim | 2-Não)");
		pergunta = entrada.nextInt();
		
		while (pergunta != 1 && pergunta != 2){
			System.out.println("Você deve inserir uma das opções existentes! ");
			System.out.println("Você ainda deseja calcular a Área de um retângulo?");
			System.out.println("1 (Sim) | 2 (Não)");
			pergunta = entrada.nextInt();
		}
		
		while  (pergunta == 1){
			System.out.println("Insira valor da BASE do retângulo: ");
			base = entrada.nextInt();
			System.out.println("Insira o valor da ALTURA do retângulo: ");
			altura = entrada.nextInt();
			
			area = (base*altura);
			
			System.out.println("A área do retângulo informado é: " + area);
			System.out.println("");
			
			System.out.println("Você ainda deseja calcular a Área de um retângulo?");
			System.out.println("1 (Sim) | 2 (Não)");
			pergunta = entrada.nextInt();
		} 
		
		
		if (pergunta == 2) {
			System.out.println("Até logo!");
		}

		if (pergunta != 1 && pergunta != 2){
			System.out.println("Opção Inválida!");
		}
		
		System.out.println("Fim");
		}
}

Abraços,

rodrigosan171

Agora sim segue o código com algumas otimizações... principalmente na parte de validação!

:lol:

import java.util.Scanner;

public class Retangulo2 {

	public static void main(String[] args) {

		int base;
		int altura;
		int area;
		int pergunta = 0;
		String nome;

		Scanner entrada = new Scanner(System.in);

		System.out.println("Insira seu nome: ");
		nome = entrada.nextLine();

		while (pergunta != 2) {
			System.out
					.println("\r\nOlá "
							+ nome
							+ ", vamos calcular a ÁREA de um retângulo? 1 (Sim) ou 2 (Não)");

			switch (pergunta) {
			case 1:
				System.out.println("Insira valor da BASE do retângulo: ");
				base = entrada.nextInt();
				System.out.println("Insira o valor da ALTURA do retângulo: ");
				altura = entrada.nextInt();

				area = (base * altura);

				System.out.println("A área do retângulo informado é: " + area);
				System.out.println("");
				break;

			case 2:
				System.out.println("Até logo!");
				System.out.println("Fim");
				break;

			default:
				System.out.println("Opção Inválida! ");
				break;
			}
		}

	}
}
G

isso ae kra, tipow… de uma olhada nos artigos e tutorias do forum tem mto material bom lah, daki uns dias vc jah vai tah dominando java

Criado 16 de fevereiro de 2008
Ultima resposta 21 de fev. de 2008
Respostas 5
Participantes 4