Data input - Java

Asked

Viewed 51 times

-1

At the time of data entry, I realized that when I put the product name and enter, there is always a loose line, the next question does not come on time, only after another enter. However, when I name the product, give space and then enter, the next instruction comes on time. Because this happens?

public static void main(String[] args) {
int count = 0, qtd, precoInferior = 0, qtdProdutoEntre = 0, qtdProSuperior = 0;
Scanner In = new Scanner(System.in);
System.out.println("Digite a quantidade de produtos: ");
qtd = In.nextInt();
In.nextLine();
float preco[] = new float[qtd];
float somaDosPro = 0, mediaDosPro;
String nome[] = new String[qtd];
String nomeProdutoEntre[] = new String[qtd];

for(int i = 0; i < qtd; i++)
{ 
 System.out.printf("\nDigite o nome do %d° produto:\n", (count + 1));
 nome[count] = In.nextLine();
 System.out.printf("Digite o preço do %d° produto:\n", (count + 1));
  preco[count] = In.nextFloat();
 In.nextLine();
  if(preco[count] < 40)
  {precoInferior++;}
 if(preco[count] >= 40 && preco[count] <= 100)
  { 
  nomeProdutoEntre[qtdProdutoEntre] = nome[count];
  qtdProdutoEntre++;
  }
 if(preco[count] > 100)
 {
  qtdProSuperior++;
  somaDosPro = preco[count] + somaDosPro;  
 }
 count++;
}
System.out.printf("\na) Há %d produto(s) com preço inferior a 40,00 R$.", precoInferior);
System.out.println("\nb) Produto(s) com preço entre 40,00 R$ e 100,00 R$: ");
if(qtdProdutoEntre == 0)
{System.out.println("Inexistentes.");}
else{
for(int j = 0; j < qtdProdutoEntre; j++)
{ System.out.println(nomeProdutoEntre[j]);
}
 }
 mediaDosPro = somaDosPro/qtdProSuperior;
 if(qtdProSuperior == 0)
 {
   System.out.println("c)Não há produtos com preço superior a 100,00 R$.");
 }
 else
{
 System.out.printf("c)Média: %.2f R$.", mediaDosPro);
}
In.close();
  }

} 
  • 1

    It is one of the properties of nextLine, try instead of using nextLine to use next()

1 answer

-2

Use the BufferedReader In = new BufferedReader(new InputStreamReader(System.in)); instead of the Scanner In = new Scanner(System.in); You need to replace all In calls to In.readLine(), in case of integers use Integer.parseInt(in.readLine()); in case of Double Double.parseDouble(entrada.readLine());in the case of Float Float.parseFloat(entrada.readLine());

Browser other questions tagged

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