2013-11-23 3 views
0

이 코드를 입력하면 세 가지 이름과 기호가 나타납니다. 하지만 그 이름은 한번 입력 할 수있는 한 번만 반복해서 3 번 반복하지 않으며, 코드는 직접 입력하여 mark1으로 뛰어 올랐습니다. 세 가지 이름을 입력하여 확인하는 방법을 알려주세요.Java 루핑 및 입력 데이터

public void in_array(String x[], float x2[], float x3[]) 
{ 
    for(i=0; i<x.length;i++) 
    { 
     System.out.println("Enter name: "); 
     x[i] = in.nextLine(); 
     System.out.println("Enter Mark one: "); 
     x2[i] = in.nextFloat(); 
     System.out.println("Enter Mark two: "); 
     x3[i] = in.nextFloat(); 
    } 
} 

출력 :

enter name: 
Enter mark one: 
+0

가능한 중복 ([스캐너 문제 nextXXX 후 꽵를 사용] http://stackoverflow.com/questions/7056749/scanner-issue-when-using-nextline-after-nextxxx) –

+0

@Sotirios Delimanolis 감사하지만 실제 솔루션은 아닙니다. –

+0

해결책은 여러 가지 대답에 있습니다. 문제를 이해한다면 스스로 해결할 수 있습니다. –

답변

0

문제는 nextFloat() 메소드는 개행 문자를 소비하지 않습니다. 그 캐릭터를 수동으로 사용하거나 풀 라인을 읽고 플로트를 수동으로 구문 분석해야합니다. 다음과 같이 볼 수 있었다 솔루션 # 1을 사용

빠른 수정 :

for(i=0; i<x.length;i++) 
{ 
    System.out.println("Enter name: "); 
    x[i] = in.nextLine(); 
    System.out.println("Enter Mark one: "); 
    x2[i] = in.nextFloat(); 
    in.nextLine(); // consume newline character 
    System.out.println("Enter Mark two: "); 
    x3[i] = in.nextFloat(); 
    in.nextLine(); // consume newline character 
} 

# 2 같을 것이다 솔루션 :

for(i=0; i<x.length;i++) 
{ 
    System.out.println("Enter name: "); 
    x[i] = in.nextLine(); 
    System.out.println("Enter Mark one: "); 
    x2[i] = Float.parseFloat(in.nextLine()); 
    System.out.println("Enter Mark two: "); 
    x3[i] = Float.parseFloat(in.nextLine()); 
} 
+1

나는 그것이 # 2 위대한 해결책을 좋아한다! –