자바 코딩
반복문과 배열
akasha.park
2023. 3. 13. 14:19
Quiz8] 주민번호 체크
13자리의 숫자 스트링 중에서 앞에서부터 12자리의 숫자 스트링을 각 숫자로 분할하여 각 자리의 수에 가중치 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5를 곱합니다.
곱한수를 모두 더하여 총합을 구합니다.
총합을 11로 나눈 나머지를 구합니다.
그 나머지를 11에서 뺀 결과가 CHECK DIGIT 입니다.
뺀 결과가 2자리수인 경우에는 2자리수를 10으로 나눈 나머지가 CHECK DIGIT가 됩니다.
CHECK DIGIT의 값이 입력 숫자 스트링의 13번째 숫자와 같으면 "CORRECT", 다르면 "INCORRECT"를 출력합니다.
HINT> (11-(총합%11))%10
package lab.java.basic;
import java.util.Scanner;
public class Quiz8_1 {
/*주민번호 체크*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("주민등록번호 입력(xxxxxx-xxxxxxx)>>");
String juminNumber = input.next();
int[] jumin = new int[13];
for (int i=0, j=0;i<juminNumber.length();i++){
if(juminNumber.charAt(i)=='-') continue;
jumin[j++] = juminNumber.charAt(i) - '0';
}
int total = 0, weight=2;
for (int i=0;i<jumin.length-1;i++){
if(weight==10) weight=2;
total += (jumin[i]) * weight ;
weight++;
}
int checkdigit = (11-(total%11))%10;
if(checkdigit ==(jumin[12])) {
System.out.println("Correct!!");
}else {
System.out.println("InCorrect!!");
}
}
}
package lab.java.basic;
import java.util.Scanner;
public class Quiz8 {
/*주민번호 체크*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("주민등록번호 입력(xxxxxx-xxxxxxx)>>");
String juminNumber = input.next();
char[] jumin = new char[13];
for (int i=0, j=0;i<juminNumber.length();i++){
if(juminNumber.charAt(i)=='-') continue;
jumin[j++] = juminNumber.charAt(i);
}
int total = 0, weight=2;
for (int i=0;i<jumin.length-1;i++){
if(weight==10) weight=2;
total += (jumin[i]-48) * weight ;
weight++;
}
int checkdigit = (11-(total%11))%10;
//System.out.println( checkdigit);
//System.out.println( total);
if(checkdigit ==(jumin[12]-'0')) {
System.out.println("Correct!!");
}else {
System.out.println("InCorrect!!");
}
}
}
Quiz 9] UpDown게임
컴퓨터가 1~100 숫자(정수 범위) 중 하나를 랜덤으로 정합니다. (이를 알려주지 않습니다.)
사용자는 이 숫자를 맞추어야 합니다.
입력한 숫자보다 정답이 크면 → "UP" 출력,
입력한 숫자보다 정답이 작으면 → "DOWN" 출력.
정답을 맞추면 → "정답"을 출력하고, 지금까지 숫자를 입력한 횟수를 알려줍니다.
package lab.java.basic;
import java.util.Random;
import java.util.Scanner;
public class Quiz9 {
/*UpDown게임*/
public static void main(String[] args) {
Random r = new Random();
int computer = r.nextInt(100)+1;
//int computer = (int)(Math.random()*100)+1;
Scanner input = new Scanner(System.in);
int count=1;
do {
System.out.print("1~100 사이에 내가 생각한 수는 ?");
int num = input.nextInt();
if (num==computer) {
System.out.println("You Win!!!");
break;
}else if(num>computer) {
System.out.println("Down");
}else if(num<computer) {
System.out.println("Up");
}
count++;
}while(count<6);
if(count==6) System.out.println("I Win!!!! ");
System.out.println("내가 생각한 수 : "+computer);
}
}
Day6-Quiz14>while문과 Math.random()메소드를 이용해서 두 개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성하시오
package lab.java.basic;
public class Quiz14 {
public static void main(String[] args) {
while(true) {//무한루프
int i = (int)(Math.random()*6+1);
int j = (int)(Math.random()*6+1);
if( i+j ==5) {
System.out.println(i+", "+j);
break;
}
System.out.println(i+", "+j);
}
}
}
Day6-Quiz15> 키보드로부터 문장을 입력받고 오른손으로 입력한 값과 왼손으로 입력한 갓을 각각 구하는 프로그램을 작성하세요
(단, 입력 값은 영문 대소문자와 숫자로 제한합니다.)
오른손 : A,B,C,D,E,F,G,Q,R,S,T,V,W,X,Z,1,2,3,4,5
왼손 : H,I,J,K,L,M,N,O,P,U,Y,6,7,8,9,0
package lab.java.basic;
import java.util.Scanner;
public class Quiz15 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("입력하세요 :");
int left = 0, right = 0;
String st = input.nextLine().toUpperCase();
int cnt = st.length();
for (int i = 0; i < cnt; i++) {
char ch = st.charAt(i);
switch (ch) {
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'V':
case 'W':
case 'X':
case 'Z':
case '1':
case '2':
case '3':
case '4':
case '5':
left++;
break;
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'U':
case 'Y':
case '6':
case '7':
case '8':
case '9':
case '0':
right++;
break;
}
}
System.out.println("왼손:" + left + ", 오른손 :" + right);
}
}