[JAVA] Loop에서 생기는 스캐너 사용자 입력 오류

조회수 886회

import java.io.ObjectInputStream.GetField; import java.util.Scanner;

import javax.print.attribute.standard.Finishings;

/** Exercise 1

  • Author : Choi Jung Ho
  • Date : 2019/04/10 */

class BasketballGame{ private int scoreA, scoreB; private String nameA, nameB, winner;

//getter setter
public int getScoreA() {
    return scoreA;
}
public void setScoreA(int scoreA) {
    this.scoreA = scoreA;
}
public int getScoreB() {
    return scoreB;
}
public void setScoreB(int scoreB) {
    this.scoreB = scoreB;
}


public String getNameA() {
    return nameA;
}
public void setNameA(String nameA) {
    this.nameA = nameA;
}
public String getNameB() {
    return nameB;
}
public void setNameB(String nameB) {
    this.nameB = nameB;
}


public void score1(String team){
    if(team.equals(nameA)) {
        scoreA++;           
    }else {
        scoreB++;
    }
}
public void score2(String team){
    if(team.equals(nameA)) {
        scoreA= scoreA+2;           
    }else {
        scoreB = scoreB +2;
    }
}
public void score3(String team){
    if(team.equals(nameA)) {
        scoreA = scoreA +3;         
    }else {
        scoreB = scoreB +3;
    }
}


// recognizing who is winner
public void winner() {
    if(scoreA>scoreB) {
        winner = nameA;
        System.out.println(winner+" is winning");
    }else if(scoreA<scoreB) {
        winner = nameB;
        System.out.println(winner+" is winning");           
    }else if(scoreA == scoreB){
        System.out.println("They are even");
    }
}

}

public class ProgrammingProject7 {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String name; 
    int score=0;
    int time=10;

    BasketballGame match = new BasketballGame();

    System.out.println("Input name of team A");
    name = sc.nextLine();
    match.setNameA(name);

    System.out.println("Input name of team B");
    name = sc.nextLine();
    match.setNameB(name);

    while(time>0) {
        System.out.println("Enter team name and score :");
        name = sc.nextLine();
                    //문제발생
        score = sc.nextInt();
        if(name.equals(match.getNameA())) {
            if(score==3) {
                match.score3(name);
            }
            if(score==2) {
                match.score2(name);
            }
            if(score==1) {
                match.score1(name);
            }
            System.out.print(match.getNameA()+" "+match.getScoreA()+", "+match.getNameB()+" "+match.getScoreB()+"; ");
        }else {
            if(score==3) {
                match.score3(name);
            }
            if(score==2) {
                match.score2(name);
            }
            if(score==1) {
                match.score1(name);
        }
            System.out.print(match.getNameA()+" "+match.getScoreA()+", "+match.getNameB()+" "+match.getScoreB()+"; ");


            }
            match.winner();
            time--;
        }


    System.out.println("Game finished");
    System.out.print(match.getNameA()+" "+match.getScoreA()+", "+match.getNameB()+" "+match.getScoreB()+"; ");
    if(match.getScoreA()>match.getScoreB()) {
        System.out.println(match.getNameA()+" has won the game!!");
    }else if(match.getScoreA()<match.getScoreB()) {
        System.out.println(match.getNameB()+" has won the game!!");
    }else {
        System.out.println("Draw!!");
    }
}   

}

실행하면 처음에는 문제 없이 팀 이름에 해당하는 점수가 저장이 되는데 그다음에 팀이름을 입력하고 엔터를 누르면 name.nextLine; 에 엔터값이 들어갔는지 저장이 안되고 score.nextInt 에 문자값이 들어가 에러가 발생합니다 ㅠㅠ

도와주세요ㅠㅠ

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)