비망록: next·nextLine(paiza 러닝 Java 입문편 9:#06에서)

2774 단어 초보자자바paiza
오늘 paiza의 Java 입문편 9에서 다음 코드를 썼습니다.

입력은 다음

6
회복제
방패
크리스탈
크리스탈



출력은 이하
※화상이 6개 표시되면 성공

// 画像を順番に出力する
import java.util.*;

public class Main {
    public static void main(String[] args) {
        // 画像用ハッシュ
        HashMap<String, String> itemImages  = new HashMap<String, String>();
        itemImages.put("剣", "http://paiza.jp/learning/images/sword.png");
        itemImages.put("盾", "http://paiza.jp/learning/images/shield.png");
        itemImages.put("回復薬", "http://paiza.jp/learning/images/potion.png");
        itemImages.put("クリスタル", "http://paiza.jp/learning/images/crystal.png");

        // ここから下を書く
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();

        String[] itemOrders = new String[num];

        for (int i = 0 ; i < num; i++) {
            itemOrders[i] = sc.next();
        }

        for (String itemName : itemOrders) {
            System.out.println("<img src = '" + itemImages.get(itemName) + "'>");
            System.out.println("<br>");
        }
    }
}

여기서 위의
for (int i = 0 ; i < num; i++) {
            itemOrders[i] = sc.next();
        }

부분을
for (int i = 0 ; i < num; i++) {
            itemOrders[i] = sc.nextLine();
        }

어쨌든,

입력값의 최초의 「6」을 읽어들여,
마지막 "검"을 읽지 않는 탓인지,



처럼.

nextLine의 부분을 next로 고치면



되어 성공했습니다.

※화상 인용:
paiza 님보다
htps : // 파이자. jp / rks / 8 × xtl을 8로 넣는 B3 포 29 우쿠 rhMK6 에 R / 오 t t. HTML
htps: //파이자. jp /를 rks / 굳이 jYrty_tyZM-09Y8 qCbLkvgw7p-V9h / t t. HTML


원인을 다양하게 조사한 결과,
이전의 nextInt의 영향을 받아, nextLine의 성질상,
nextInt로 읽은 숫자 부분을 공백으로 읽어 버린 것 같습니다.

next로 해서 고친 것은, 공백까지 인식하는 nextLine과 달리, 개행으로 인식되기 때문에,
nextInt로 읽은 부분을 next는 인식하지 못했기 때문이라고 생각했습니다.

・・・라고는 해도 이것이 있는지 모르기 때문에, 알고 있는 사람이 있으면,
가르쳐 주시면 매우 매우 고맙습니다 ···! ! ! ! ! ! ! ! ! ! ! ! !

좋은 웹페이지 즐겨찾기