程序输出太多行?

时间:2014-01-11 02:11:29

标签: java output

import java.util.Scanner;
public class Sales   
{
public static void main (String[] args)
{

 Scanner scan = new Scanner(System.in);

 String[] name = new String[5]; 
 double[] sales = new double[5]; 

     for (int i=0; i<5; i++) {  
     System.out.println ("What is the name of the person?");
     name[i] = scan.nextLine();
     System.out.println ("How much did he/she sell?");
     sales[i] = scan.nextDouble();
     }
     for (int j=0; j<5; j++) {  
     System.out.println (name[j] + " sold " + sales[j]);
     }


     int sum = 0; 
     for (double k : sales){
     sum+=k;
     }

     double avg = sum / 5; 
     System.out.println ("The average sales is: " + avg);

     for (int i = 0; i < 5; i++) {
     if (sales[i] >= avg){ 
     System.out.println (name[i] + " sold more than the average sales.");
     }
     }
 }

}

(这段代码只是程序的一部分..对不起,如果它有点混乱[我初学者]) 这是问题...... 它输出如下:
这个人叫什么名字?
帕特里克
他/她卖了多少? 8000
该人的姓名是什么? 他/她卖多少钱?

粗体的行是问题。我想输入一个不同的名字和金额,但它同时要求我两次。任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:4)

nextDouble之后,您必须致电scan.NextLine()以摆脱输出中留下的行尾字符。

scan.nextDouble方法只读取数字,没有别的。并且因为用户通过按Enter键“确认”他的输入,他还将在那里发送一个行尾字符。然后for循环将此行尾字符作为第一个问题的输入。因此 - 在读取双精度后,只需调用一个空的scan.NextLine(),你就可以了:-)。