Ajuda finalizar execução utilizando uma String

4 respostas
G

Sou iniciante em Java e estou com dificuldade em finalizar a execução do programa quando a String 'fim' for digitada.
No programa abaixo acusa erro na linha 16.

Faça um programa que vá lendo todos os números do teclado e só para quando o usuário digitar a string ?fim?. Depois, calcula e imprime a média dos números digitados.
package L1_Ex5;
import java.util.Scanner;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		Integer num=0, count=0;
		String palavra = "";

		while(!palavra.equals("fim")){
			System.out.println("Digite um número: ");
			num += in.nextInt();
			count++;
		}
		System.out.println(num);
		System.out.println("Média = "+(float)num/count);
	}
}
Erro:
Exception in thread "main" java.util.InputMismatchException
	at java.util.Scanner.throwFor(Unknown Source)
	at java.util.Scanner.next(Unknown Source)
	at java.util.Scanner.nextInt(Unknown Source)
	at java.util.Scanner.nextInt(Unknown Source)
	at L1_Ex5.Main.main(Main.java:16)

Gostaria da ajuda de vocês. Obrigado.

4 Respostas

yoshikichi
while(!palavra.equals("fim")){  
            System.out.println("Digite um número: ");  
            palavra = in.next();  
       
        }
D

Bom dia,

esse erro que vc se refere esta na linha 16, onde o in.nextInt() espera um valor do tipo int mas vc passa um valor String: "fim"
Também ha um erro na condição de saida do while, onde a variavel palavra nunca recebe a String "fim" portanto fica em loop infinito.

coloque um if para tratar isso:

while(!palavra.equals("fim")){  
			System.out.println("Digite um número: "); 
			if(!in.hasNext("fim")){
				num += in.nextInt();	
			}else{
				palavra = "fim";
			}
			
			count++;  
		}

Abçs!

justoeu

Opa!!

Além das opções que os nosso colegas acrescentaram… vc pode usar o in.nextLine() que retorna uma String e com ele poderia testar se é fim ou nao!

Att,

G

Muito obrigado galera. Problema resolvido com sucesso.

Criado 10 de maio de 2011
Ultima resposta 10 de mai. de 2011
Respostas 4
Participantes 4