2014-01-11 6 views
0
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."); 
    } 
    } 
} 

}프로그램 출력이 너무 많습니다?

(이 코드는 다소 성가신 [IM 초보자]의 미안 경우 .. 프로그램의 일부이다)이 문제 ... 그것은 이렇게 출력한다 :
란 그 사람의 이름이 뭐야?
패트릭
얼마나 많이 팔았습니까?
사람의 이름은 무엇입니까?
그는 얼마를 팔았습니까?

굵게 표시된 줄이 문제입니다. 다른 이름과 금액을 입력하고 싶지만 동시에 두 번 묻습니다. 어떤 도움이라도 대단히 감사하겠습니다. 고맙습니다.

+1

아, 네 [this] (http://stackoverflow.com/questions/17538182/getting-keyboard-input/17538216#17538216)를 살펴보고이 [answer] (http://stackoverflow.com)을 특별하게 생각하십시오./a/13102066/2415194) – nachokk

+0

물론, 잠시. – pmcg521

답변

4

nextDouble 다음에 출력에 남아있는 행 끝 문자를 없애려면 scan.NextLine()으로 전화해야합니다.

scan.nextDouble 메서드는 숫자 만 읽습니다. 그리고 사용자가 enter를 눌러 자신의 입력을 "확인"하기 때문에, 사용자는 enter-line 문구를 보낼 것입니다. for 루프는이 줄 끝 문자를 첫 번째 질문의 입력으로 사용합니다. 따라서 double을 읽은 후에 빈 scan.NextLine()을 호출하면 괜찮을 것입니다 :-).

+2

해결 방법을 보려면 this [answer] (http://stackoverflow.com/a/13102066/2415194)를 참조하십시오. – nachokk

+0

대단히 감사합니다! 그것은 완벽하게 작동합니다. : D – pmcg521

+0

당신은 환영합니다, 각하 :-) –