Problemas com Scanner!

5 respostas
R

Estou tentando calcular o prejuízos da empresa com o Java, e estou usando o Scanner para que eu possa mudar as informações quando eu quizer. Eu coloquei três perguntas que foram:

System.out.println("How Many Minutes Per Hour Do Your Employees Waste While At Work?");
Scanner MinutesX = new Scanner(System.in);
System.out.println("How Much You Earn Per Hour?");
Scanner ValueY = new Scanner(System.in);
System.out.println("How Many Employees Waste While At Work?");
Scanner EmployeesZ = new Scanner(System.in);

O certo seria ele primeiro fazer a primeira pergunta, para depois partir para a segunda pergunta, mas ele está já partindo para a terceira pergunta. O que está acontecendo?

5 Respostas

R

O código que eu usei foi:

import java.util.Scanner;
class Prejuizos {
	public static void main (String[] args) {
		int MinutesWasted;
		double ValueHour;
		int NumberEmployees;
		
		//Asking for Information
		System.out.println("How Many Minutes Per Hour Do Your Employees Waste While At Work?");
		Scanner MinutesX = new Scanner(System.in);
		System.out.println("How Much You Earn Per Hour?");
		Scanner ValueY = new Scanner(System.in);
		System.out.println("How Many Employees Waste While At Work?");
		Scanner EmployeesZ = new Scanner(System.in);
		
		//Creating Variables and Giving Informations
		MinutesWasted = MinutesX.nextInt();
		ValueHour = ValueY.nextDouble();
		NumberEmployees = EmployeesZ.nextInt();
		
		//Subtract, Mutiplication and Division
		int Result1 = 60 - MinutesWasted;
		int Result2 = Result1 * 8;
		int Result3 = Result2 * 4 * 12;
		double Result4 = Result3 * ValueHour;
		double Result5 = Result4 * NumberEmployees;
		
		//Result
		System.out.println("The Company's loss is:");
		System.out.println(Result5);
	}
}
R

Encontrei mais dois erros. Primeiro que o Scanner não está aceitando números quebrados e o outro problema que o calculo está dando errado, mas não vejo errado na construção da conta.
A conta é: (((60-X)86412)/60)YZ

ViniGodoy

Não é assim que usa o scanner. Veja:

Scanner in = new Scanner(System.in); double minutesX = Double.parseDouble(in.nextLine());

I

Você estava apenas instanciando os “scanners”, mas nao os estava utilizando.
Você deve utilizar o método “next()” para entrar com dados via teclado
Assim como o ViniGodoy disse, “nextLine()” é um método q lê uma linha inteira até ser pressionado.

ViniGodoy

IronM:
Você estava apenas instanciando os “scanners”, mas nao os estava utilizando.
Você deve utilizar o método “next()” para entrar com dados via teclado
Assim como o ViniGodoy disse, “nextLine()” é um método q lê uma linha inteira até ser pressionado.

Para ler dados via teclado, você deve usar o nextLine(). Os métodos nextInt(), nextDouble() são para outros tipos de entrada (arquivos).
Lembre-se que via teclado, o conteúdo é sempre terminado com um enter. Usar os outros métodos pode deixar lixo no buffer do Scanner, o que faz com que algumas leituras misticamente sejam ignoradas.

Criado 12 de dezembro de 2011
Ultima resposta 13 de dez. de 2011
Respostas 5
Participantes 3