끝말잇기 게임을 만들어보세요.
제시어 : 자전거
입력 : 거미
제시어 : 거미
입력 : 미술
...ect
Scanner sc = new Scanner(System.in);
String start = "자전거";
while (true) {
System.out.println("제시어 : " + start + "종료 : exit");
System.out.print("입력 : ");
String input = sc.next();
if (input.equals("exit")) {
System.out.println("끝내기 ");
break;
}
int startLastWord = start.charAt(start.length()-1);
int inputFirstWord = input.charAt(0);
if ( startLastWord == inputFirstWord) {
System.out.println("정답\n");
start = input;
} else {
System.out.println("오답 다시");
}
}
charAt() 메서드로 제시어 끝문자와 입력단어 시작문자의 아스키코드 값을 구해 비교하면 되는 문제
. equals() 메서드 사용없이 equals 직접구현 문자의 일치여부 비교
예)
코끼리
입력 = 티라노사우루스
출력 = false
Scanner sc = new Scanner(System.in);
String name = "코끼리";
System.out.println("동물이름 입력");
String animal = sc.next();
boolean check = false;
if (name.length() == animal.length()) {
check = true;
}
if (check == true) {
for (int i = 0; i < name.length(); i++) {
if (name.charAt(i) != animal.charAt(i)) {
check = false;
break;
}
}
} else {
System.out.println("글자수 다름");
}
System.out.println(check);
제시 단어와 입력 단어 길이를 비교해 준 후 길이가 같으면 각 문자들 아스키 코드 값이 같은지 비교
아이디와 비밀번호 입력받고 로그인출력
조건) 단, 아이디와 비밀번호는
1) 대문자로 입력하던 ,
2) 소문자로 입력하던 ,
3) 섞어서 입력하던 전부 인식되어야한다.
Scanner sc = new Scanner(System.in);
String dbId = "q1w2e3r4";
String dbPwd = "r4e3w2q1";
String str0 = "0123456789";
String str1 = "abcdefghijklmnopqrstuvwxyz";
String str2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// System.out.print("아이디 입력 : ");
// String id = sc.next();
// System.out.print("비밀번호 입력 : ");
// String pwd = sc.next();
String id = "Q1w2E3r4";
boolean check = false;
if (dbId.length() != id.length()) { // 길이가 다를 경우
check = true;
} else {
for (int i = 0; i < dbId.length(); i++) {
char dbC = dbId.charAt(i);
char idC = id.charAt(i);
if (dbC != idC) { // 같지 않으면 검사(같을경우 굳이 검사할 필요 없음
//숫자가 틀린지 검사 ==> 영어자리에 숫자 있으면 true걸림
for (int j = 0; j < str0.length(); j++) {
if (dbC==str0.charAt(j) || idC==str0.charAt(j)) {
check = true;
System.out.println("숫자 :"+dbC + " " + idC);
break;
}
}
//글자이면 대소문자 검사 ==> 같지 않으면 불일치
for (int j = 0; j < str1.length(); j++) {
if (str1.charAt(j) == dbC) {
if (str2.charAt(j) != idC) {
check = true;
System.out.println(dbC + " " + idC);
break;
}
} else if (str2.charAt(j) == dbC) {
if (str1.charAt(j) != idC) {
check = true;
System.out.println(dbC + " " + idC);
break;
}
}
}
}
}
}
if (check == false) {
System.out.println("일치");
} else {
System.out.println("불일치");
}
// if (dbId.equalsIgnoreCase(id) && dbPwd.equalsIgnoreCase(pwd)) {
// System.out.println("로그인 성공");
// } else {
// System.out.println("로그인 실패");
// }
sc.close();
}
주석처리한 부분은 왠지 String 메소드 중에 대소문자 상관없이 일치함을 판별해주는 메소드가 있지 않을까 싶어 구글링해봤고 equalsIgnoreCase() 메소드를 사용하면 대소문자 상관없이 판별해준다해서 사용하여 답을 내놨다.
당연히 반려당했다.
날로 먹을 수 있는건 생선이나 소 뿐인 것 같다.
chartAt() 메서드로 각 단어가 같지 않을때 들어오면 숫자가 같으면 해당사항에 없게 된다.
단어들이 일치하지 않을때, 회전수를 줄이기 위해 숫자가 있으면 불일치이니 숫자가 위치하고 있는지 먼저 판별을 해준다. 그 후 대소문자를 검사해주면 된다.
Random rnd = new Random();
Scanner sc = new Scanner(System.in);
String[] words = {"java", "mysql", "jsp", "spring"};
for (int i = 0; i < 100; i++) {
int rNum1 = rnd.nextInt(words.length);
int rNum2 = rnd.nextInt(words.length);
String temp = words[rNum1];
words[rNum1] = words[rNum2];
words[rNum2] = temp;
}
System.out.println(Arrays.toString(words));
int index = 0;
while (true) {
if (index == words.length) {
System.out.println("클리어 \n게임 종료");
break;
}
System.out.println("문제 : " + words[index]);
System.out.print("입력 : ");
String str = sc.next();
if (words[index].equals(str)) {
System.out.println("정답");
index++;
} else {
System.out.println("오답");
}
}
System.out.println();
for (String str : words) { // words의 값을 차례대로 가져와서 str에 넣어라
System.out.println(str);
}
sc.close();
앞에서 이해를 다 하고 넘어왔다면 크게 어려움은 없을 문제