Programming/Java

nextInt() ๋‹ค์Œ์— nextLine()์ด ์”นํžˆ๋Š” ์ด์œ 

UNarD 2026. 3. 13. 17:55

๐Ÿ” nextInt() ๋‹ค์Œ์— nextLine()์ด ์”นํžˆ๋Š” ์ด์œ 

Scanner ๋ฅผ ์“ฐ๋‹ค๋ณด๋ฉด ๋ถ„๋ช…ํžˆ ์ฝ”๋“œ๋ฅผ ๋งž๊ฒŒ ์งฐ๋Š”๋ฐ, ์ž…๋ ฅ์„ ๋ฐ›์ง€๋„ ์•Š๊ณ  ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐˆ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ ์ด์œ ๊ฐ€ ๋„ˆ๋ฌด ๊ถ๊ธ‰ํ•ด์„œ ํ•œ๋ฒˆ ๊ณต๋ถ€ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ๐Ÿคฃ


์ œ๊ฐ€ ๋งŒ๋‚ฌ๋˜ ํ˜„์ƒ..๐Ÿ˜ฑ

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ด์ƒํ•œ ์ผ์ด ๋ฒŒ์–ด์ง‘๋‹ˆ๋‹ค.

Scanner sc = new Scanner(System.in);

System.out.print("๋‚˜์ด ์ž…๋ ฅ: ");
int age = sc.nextInt();

System.out.print("์ด๋ฆ„ ์ž…๋ ฅ: ");
String name = sc.nextLine(); // ์ž…๋ ฅ์ฐฝ ์•ˆ๋œธ(๋„˜์–ด๊ฐ€์ง)

System.out.println("๋‚˜์ด: " + age);
System.out.println("์ด๋ฆ„: " + name);
๐Ÿ“ฅ ์ถœ๋ ฅ
๋‚˜์ด ์ž…๋ ฅ: 25
์ด๋ฆ„ ์ž…๋ ฅ: 
๋‚˜์ด: 25
์ด๋ฆ„:        โ† ๋นˆ ๋ฌธ์ž์—ด!

์ด๋ฆ„์„ ์ž…๋ ฅํ•  ํ‹ˆ๋„ ์—†์ด ๋นˆ ๋ฌธ์ž์—ด์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๐Ÿคฏ


๐Ÿ‘บ ๋ฒ”์ธ์€ ๋ฒ„ํผ์— ๋‚จ๊ฒจ์ง„ \n

์ฝ˜์†”์— "25" ๋ฅผ ์น˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅด๋Š” ์ˆœ๊ฐ„, ๋ฒ„ํผ์— ์ €์žฅ๋˜๋Š” ๊ฑด 25\n์ž…๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ nextInt()์™€ nextLine()์ด ๋ฒ„ํผ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€๊ฐ€ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

๐Ÿ”ธ nextInt()์˜ ํ–‰๋™

nextInt()๋Š” ํ† ํฐ(Token) ๋‹จ์œ„๋กœ ์ฝ์Šต๋‹ˆ๋‹ค.

๋ฒ„ํผ: [ 2 ][ 5 ][ \n ]
      ----------
         โ†‘โ†‘โ†‘
     nextInt()๊ฐ€ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒƒ

"25"๋งŒ ์™ ๊ฐ€์ ธ๊ฐ€๊ณ , "\n"์€ ๋ฒ„ํผ์— ๊ทธ๋Œ€๋กœ ๋‚จ๊ฒจ๋‘ก๋‹ˆ๋‹ค.

๐Ÿ”ธ nextLine()์˜ ํ–‰๋™

nextLine()์€ ํ˜„์žฌ ์œ„์น˜๋ถ€ํ„ฐ \n์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์ „๋ถ€ ์ฝ์Šต๋‹ˆ๋‹ค.

๋ฒ„ํผ: [ \n ]   โ† nextInt()๊ฐ€ ๋‚จ๊ธฐ๊ณ  ๊ฐ„ ๊ฒƒ
         โ†‘
     "์–ด, ๋ฐ”๋กœ \n์ด๋„ค? ๋‹ค ์ฝ์—ˆ๋‹ค!" โ†’ ๋นˆ ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜

nextLine() ์ž…์žฅ์—์„  ์–ต์šธํ•  ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค. ์‹œํ‚ค๋Š” ๋Œ€๋กœ ํ–ˆ์„ ๋ฟ์ด๋‹ˆ๊นŒ์š”ใ…‹ใ…‹ ๐Ÿ˜‚



โ„น๏ธ ์ž…๋ ฅ ๋ฒ„ํผ(Input Buffer)๋ž€?

ํ‚ค๋ณด๋“œ๋กœ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌ๋˜๊ธฐ ์ „์— ์ž ์‹œ ๋Œ€๊ธฐํ•˜๋Š” ์ž„์‹œ ์ €์žฅ ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. Scanner๋Š” ์ด ๋ฒ„ํผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.


โ„น๏ธ ํ† ํฐ(token)์ด๋ž€?

๊ณต๋ฐฑ, ํƒญ, ๊ฐœํ–‰ ๋ฌธ์ž(\n)๋กœ ๊ตฌ๋ถ„๋œ ๋ฉ์–ด๋ฆฌ์ž…๋‹ˆ๋‹ค.

๐Ÿค” ์™œ nextInt()๋Š” \n์„ ์•ˆ ๋จน์„๊นŒ์š”?

nextInt()๋Š” ๋‚ด๋ถ€์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋™์ž‘ํ•ด์š”!

1๏ธโƒฃ ์•ž์ชฝ ๊ตฌ๋ถ„์ž ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๊ณต๋ฐฑ, ํƒญ, \n ๋“ฑ ๊ตฌ๋ถ„์ž๊ฐ€ ์•ž์— ์žˆ์œผ๋ฉด ์ „๋ถ€ ์Šคํ‚ตํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„ํผ: [ \n ][ 2 ][ 5 ][ \n ]
        โ†‘ ์ปค์„œ
โ†’ ์•ž์ชฝ \n ์Šคํ‚ต
๋ฒ„ํผ: [ \n ][ 2 ][ 5 ][ \n ]
              โ†‘ ์ปค์„œ ์ด๋™

2๏ธโƒฃ ๋‹ค์Œ ๊ตฌ๋ถ„์ž ์ง์ „๊นŒ์ง€ ์ฝ๊ธฐ

๊ตฌ๋ถ„์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋ฅผ ์ฝ๋‹ค๊ฐ€, ๊ตฌ๋ถ„์ž๊ฐ€ ๋‚˜์˜ค๋ฉด ๊ทธ ์ง์ „์—์„œ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

๋ฒ„ํผ: [ 2 ][ 5 ][ \n ]
       โ†‘ ์‹œ์ž‘

'2', '5' ์ฝ๊ธฐ โ†’ '\n' ๋ฐœ๊ฒฌ โ†’ ์ •์ง€

๋ฒ„ํผ: [ 2 ][ 5 ][ \n ]
                  โ†‘ ์ปค์„œ (์—ฌ๊ธฐ์„œ ๋ฉˆ์ถค)

3๏ธโƒฃ ํ† ํฐ ๋ฐ˜ํ™˜, ๊ตฌ๋ถ„์ž๋Š” ๊ทธ๋Œ€๋กœ

"25"๋ฅผ int๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ปค์„œ๋Š” \n ์•ž์— ๊ทธ๋Œ€๋กœ ๋จธ๋ญ…๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’: 25
๋ฒ„ํผ:  [ \n ]  โ† ์•„๋ฌด๋„ ์•ˆ ๊ฑด๋“œ๋ฆฐ ์ฑ„๋กœ ๋‚จ์•„์žˆ์Œ
        โ†‘ ์ปค์„œ

์—ฌ๊ธฐ์„œ nextLine()์„ ํ˜ธ์ถœํ•˜๋ฉด ์ปค์„œ๊ฐ€ \n์„ ๋ฐ”๋กœ ๋งŒ๋‚˜๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.
๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋๋‚˜๋Š” ์ด์œ ๊ฐ€ ์ด๊ฒƒ ์ž…๋‹ˆ๋‹ค..๐Ÿ˜ต


โš ๏ธ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ

์กฐํ•ฉ nextLine() ์”นํž˜ ์—ฌ๋ถ€
nextDouble() โš ๏ธ ์”นํž˜
nextLong() โš ๏ธ ์”นํž˜
next() โš ๏ธ ์”นํž˜

โ„น๏ธ ๊ณต์‹ ์„ค๋ช… (Java SE 8 ๋ฌธ์„œ)

ํ† ํฐ ๊ธฐ๋ฐ˜ ๋ฉ”์„œ๋“œ๋“ค์€ ๊ตฌ๋ถ„์ž(delimiter)๋ฅผ ์†Œ๋น„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ๊ตฌ๋ถ„์ž๋Š” ๊ณต๋ฐฑ, ํƒญ, ๊ฐœํ–‰ ๋ฌธ์ž(\n)๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ๊ณต๋ฐฑ ๋ฌธ์ž(whitespace)์ž…๋‹ˆ๋‹ค.


๐Ÿ›  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

1๏ธโƒฃ ๋นˆ nextLine()์œผ๋กœ ์ฒญ์†Œํ•˜๊ธฐ

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค!! nextInt() ์งํ›„ nextLine()์„ ํ•œ ๋ฒˆ ๋” ํ˜ธ์ถœํ•ด์„œ ๋ฒ„ํผ์— ๋‚จ์€ \n์„ ์ œ๊ฑฐํ•ด์ค๋‹ˆ๋‹ค.
๊ดœ์ฐฎ์€ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ, ๊นŒ๋จน์œผ๋ฉด ๋ฒ„๊ทธ๊ฐ€ ์žฌ๋ฐœํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์–ด์š”.๐Ÿ˜ฑ

int age = sc.nextInt();
sc.nextLine(); // ๐Ÿงน ๋ฒ„ํผ ์ฒญ์†Œ

String name = sc.nextLine(); // ์ด์ œ ์ •์ƒ ์ž‘๋™

2๏ธโƒฃ nextLine() + ํŒŒ์‹ฑ (๊ถŒ์žฅ) โœ…

๋” ๊น”๋”ํ•˜๊ณ  ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ž…๋ ฅ์„ nextLine()์œผ๋กœ ๋ฐ›๊ณ , ์ˆซ์ž๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์ง์ ‘ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

System.out.print("๋‚˜์ด ์ž…๋ ฅ: ");
int age = Integer.parseInt(sc.nextLine()); // String โ†’ int ๋ณ€ํ™˜

System.out.print("์ด๋ฆ„ ์ž…๋ ฅ: ");
String name = sc.nextLine(); // ์ •์ƒ ์ž‘๋™
โš ๏ธ NumberFormatException ์ฃผ์˜

์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด NumberFormatException์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์„œ๋น„์Šค์—์„œ๋Š” try-catch๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์„ธ์š”.


โ˜• ๋งˆ๋ฌด๋ฆฌ

๋ฉ”์„œ๋“œ ์ฝ๋Š” ๋‹จ์œ„ \n ์†Œ๋น„ ์—ฌ๋ถ€
nextInt() ํ† ํฐ (์ •์ˆ˜) โŒ ์†Œ๋น„ ์•ˆ ํ•จ
next() ํ† ํฐ (๋ฌธ์ž์—ด) โŒ ์†Œ๋น„ ์•ˆ ํ•จ
nextLine() ํ•œ ์ค„ ์ „์ฒด โœ… ์ฝ๊ณ  ๋ฒ„๋ฆผ (๋ฐ˜ํ™˜๊ฐ’ ๋ฏธํฌํ•จ)

๐Ÿ“š ์ฐธ๊ณ ์ž๋ฃŒ