문제

다음 코드를 받았습니다.

int nnames;
String names[];

System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = in.nextInt();
names = new String[nnames];

for (int i = 0; i < names.length; i++){
  System.out.print("Type a name: ");
  names[i] = in.nextLine();
}

그리고 해당 코드의 출력은 다음과 같습니다.

How many names are you going to save:3 
Type a name: Type a name: John Doe
Type a name: John Lennon

이름이 어떻게 건너 뛰었는지 주목하세요 ?? 그것은 그것을 건너 뛰고 두 번째 이름 항목을 위해 곧장 갔다. 나는 이것을 원인하는 원인을 보려고 노력했지만 그것을 못 박을 수없는 것 같습니다. 누군가 나를 도울 수 있기를 바랍니다. 감사

도움이 되었습니까?

해결책

오류의 이유는 NextInt가 Newline이 아닌 정수 만 당기기 때문입니다. 루프를 위해 in.nextline ()을 추가하면 빈 새 라인을 먹고 3 개의 이름을 입력 할 수 있습니다.

int nnames;
String names[];

System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = in.nextInt();

names = new String[nnames];
in.nextLine();
for (int i = 0; i < names.length; i++){
        System.out.print("Type a name: ");
        names[i] = in.nextLine();
}

또는 선을 읽고 정수로 값을 구문 분석하십시오.

int nnames;
String names[];

System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = Integer.parseInt(in.nextLine().trim());

names = new String[nnames];
for (int i = 0; i < names.length; i++){
        System.out.print("Type a name: ");
        names[i] = in.nextLine();
}

다른 팁

sc.nextline ()을 사용하십시오. 마지막 줄의 줄을 읽을 수 있도록 두 번

sc.nextline () sc.nextline ()

in.nextint ()가 선을 변경하지 않기 때문입니다. 따라서 먼저 "Enter"(3을 누른 후)는 루프에서 in.nextline ()에 의해 읽기를 읽습니다.

여기에서 할 수있는 작은 변화가 있습니다.

int nnames;
    String names[];

    System.out.print("How many names are you going to save: ");
    Scanner in = new Scanner(System.in);
    nnames = Integer.parseInt(in.nextLine());
    names = new String[nnames];

    for (int i = 0; i < names.length; i++){
            System.out.print("Type a name: ");
            names[i] = in.nextLine();
    }

in.nextint ()는 int 번호 만 받고 새 줄을받지 않기 때문에 이것은 새 줄을받지 않기 때문입니다. 따라서 3을 입력하고 "Enter"를 누르면 선 끝이 in.nextline ()에 의해 읽습니다.

내 코드는 다음과 같습니다.

int nnames;
String names[];

System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = in.nextInt();
in.nextLine();
names = new String[nnames];

for (int i = 0; i < names.length; i++){
        System.out.print("Type a name: ");
        names[i] = in.nextLine();
}

당신은 단순히 교체했을 수 있습니다

names[i] = in.nextLine(); ~와 함께 names[i] = in.next();

Next ()를 사용하면 공간 앞에 오는 것을 반환합니다. NextLine ()은 현재 라인을 반환 한 후 스캐너를 자동으로 이동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top