2017-12-30 13 views
3

의도 한 것보다입니다 그들 :ArrayList를 하나 개의 요소를 더 이상 내가 사용자의 입력으로 문자열을 보유 ArrayList에를 만들

System.out.println("How many words do you want to enter?"); 
int numVerbs = scan.nextInt(); 
ArrayList <String> verbs = new ArrayList <String> (numVerbs); 
System.out.println("Start entering words:"); 
for(int i=0;i<=numVerbs;i++){ 
    verbs.add(scan.nextLine()); 
} 
System.out.print(verbs.size()); 
} 

문제는 그 나는 인쇄 한 후 작성하여 목록에 문자열을 추가 할 때 arraylist의 크기에서, 그것은 내가 원하는 것보다 더 큰 요소입니다.

예를 들어 추가 할 단어의 수를 3으로 입력 한 다음 3 단어를 입력합니다. 그러나 arraylist의 크기를 다시 인쇄하면 4가 아닙니다.

아마도 동사와 관련이 있습니다. 빈 목록에 추가 하시겠습니까? Idk, 나는 분실했다. 그대로 for 루프가 될 때까지 반복 한 후 0에서 시작되기 때문에

for(int i = 1; i <= numVerbs; i++){ ... } 

또는이 필요 i < numVerbs

for(int i = 0; i < numVerbs; i++){ ... } 

i <= numVerbs의 조건을 변경

+0

<=, 배열 목록이 더 많은 용량으로 다시 만들어지고 <= to <로 변경됩니다. 0에서 시작합니다. – prsvr

+0

디버거 사용 방법을 배우는 것이 좋습니다. 이것은 컴퓨터 프로그램 작성법을 배우는 모든 사람들에게 소중한 도구입니다. –

+0

[디버거 란 무엇이며 어떻게 문제를 진단하는 데 도움이됩니까?] (https://stackoverflow.com/questions/25385173/what-is-a-debugger-and-how-can-it-help- 내 진단 - 문제) – Turing85

답변

1
1에서 루프를 시작

숫자는 을 포함하여이므로 사용자는 필요한 것보다 한 번의 반복을 수행하고 있습니다.

+0

답장을 보내 주셔서 감사합니다! arraylist의 크기가 고정되었지만 크기가 3을 출력 할 때 2 단어 만 입력 할 수 있습니다. 배열 목록에 3 단어를 입력하고 크기를 3으로 출력 할 수 있습니까? – MajorMoo

+0

@MajorMoo 입력의 마지막 개행 문자를 사용하기 위해 for 루프 앞에'scan.nextLine();'을 삽입하십시오. 필요한 이유에 대한 자세한 설명은 [here] (https://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-nextint-or-other-nextfoo)를 참조하십시오. –

+0

Ooooohhh - 그래, 고쳐, 고마워! – MajorMoo

0

다음과 같이 바꿀 수 있습니다 : 각 루프 앞에 while scan.hasNextLine()을 추가 할 수 있습니다. 단, 사용자에게 미리 단어 수를 묻지 않아도됩니다.

관련 문제