[JAVA] Loop에서 생기는 스캐너 사용자 입력 오류
조회수 884회
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 에 문자값이 들어가 에러가 발생합니다 ㅠㅠ
도와주세요ㅠㅠ
댓글 입력