종료 후 맞은개수/틀린개수 출력.
Scanner s = new Scanner(); //<콘솔창에 입력할 수 있는 도구
Random rd = new Random(); //<랜덤 도구
int num1 = rd.nextInt(); //정수형 랜덤 숫자 하나를 num1에 넣겠다.
int num2 = rd.nextInt(10); //0~9까지의 숫자를 랜덤으로 뽑아 num2에 넣겠다.
int num3 = rd.nextInt(10)+1; //1~10까지의 숫자 랜덤뽑아서 num3에 넣겠다.
int correct = 0;
int wrong = 0;
while(ture){ //<무한반복이니 while (not for)
system.out.printf //원하는 출력서식이 있을 때 쉽게 쓸 수 있음.
("%d + %d = ", num1, num2) //%d는 정수형. 컴마 이용해서 순차적으로 값 적어주기.
int input = s.nextInt(); //<콘솔창에 입력한 숫자를 input에 넣기.
if(intput = num1+num2){
system.out.println("SUCCESS!");
correct++;
num1 = rd.nextInt(10)+1;
num2 = rd.nextInt(10)+1; //<답을 맞췄으면 랜덤 숫자로 재출제.
}else {
system.our.pirntln("Fail!");
wrong++;
}
system.our.print("계속하시겠습니까?")
String y_n = s.next(); //<문자열 String 으로 Y/N입력받기.
if(y_n.equals("N")){
system.out.println("종료")
break;
}
}
Syetem.out.println("맞춘개수 : "+correct);
Syetem.out.println("틀린개수 : "+wrong);
Scanner s = new Scanner(System.in);
int a = 0; //1/2/3고르는 정수값 초기화.
String [] id_arr = new String [3];
int [] pw_arr = new int[3]; // 3명의 로그인 정보 저장.
int cnt = 0; //< 회원가입한 사람의 수를 카운팅해줄 변수.
while(true){
System.out.print("1.[회원가입] 2.[로그인] 3.[종료] >> ")
a = s.nextInt();
if(a == 1){
system.out.println("==회원가입==");
System.out.pirnt("아이디 : ")
String id = s.next();
System.out.pirnt("비밀번호 : ")
int pw = s.nextInt();
id_arr[cnt]=id;
pw_arr[cnt]=pw;
cnt++ // ++해줘야 두번째 회원가입 한 사람은 각 배열의 1번 인덱스에 저장.
}else if(a == 2){
system.out.println("==로그인==");
System.out.pirnt("아이디 : ")
String id = s.next();
System.out.pirnt("비밀번호 : ")
int pw = s.nextInt();
//입력값과 배열에 저장된 값 비교해야함.
//int a =0; //<로그인 실패를 알 수 있는 변수. id_arr[3]이 되면 실패하니까
배열의 값과 사용자가 입력한 값이 같다면 반복문 재생.
int a==3이 될때 반복문 끝.
하지만 int a는 for 문 안에서만 쓸 수 있으니까 for문 밖에서 int a 변수 선언.
int a = 0;
1번방법) for(a<=id_arr.length, a++){
if(id_arr[a] != null) { // 널값이 아닐 때만 밑에 조건문 실행한다.
if(id_arr[a].equals(id) && pw_arr[a]==pw){
System.out.println("로그인 성공");
break;
}
}
}
2번방법) if(id_arr[0].equals(id) && pw_arr[0]==pw){
System.out.println("로그인 성공");
}if(id_arr[1].equals(id) && pw_arr[1]==pw){
System.out.println("로그인 성공");
}if(id_arr[2].equals(id) && pw_arr[2]==pw){
System.out.println("로그인 성공");
}
break;
}else if(a == 3){
system.out.println("==종료==");
break;
}else {
system.out.println("다시 선택해주세요.");
}
}
for (int i = 0; i<id_arr.length; i++){ //회원가입된 회원 정보 확인(배열에 값을 출력)
system.out.println(id_arr[i]);
system.out.println(pw_arr[i]);
}
//확장 for문 (배열 자료구조, arraylist(가변길이 구조.) 사용시 확인 할 때 사용하기 좋은 구조. for~each문)
for(String z(자료의 데이터형, 새로운 변수이름):id_arr(변수이름)){
System.out.println(z); //하나의 데이터를 하나씩 꺼내주는 경우 좋음. 여러개 꺼낼 땐 위쪽 if문이 유용.
}
break는 반복횟수가 정해져있는 for문에서는 잘 안쓰고 무한반복인 while문에서 자주 쓰임.
스트링 타입은 입력 안하면 기본으로 null값.
숫자 타입은 입력 안하면 기본 0값.
undefined : 변수는 존재하나, 어떠한 값으로도 할당되지 않아 자료형이 정해지지 않은 상태.
nullpointerexception : RuntimeException. 프로그램에 널값을 가지는 객체 참조를 사용하려고하면 이런 오류가 뜬다. (비어있는 널값은 다른 자료형과 비교할 수 없으니까 나는 오류. )
과제
int [][] seet = new int [5][3] //: 5개의 열이 있고 3개의 행이 있는 구조.
int [0][0] = 1;
//seet의 0번째 배열의 0번열에 값 할당.
double doubleArray[][]={{0.01, 0,02},{0.03, 0.04}} // 배열에 바로 입력하는 형태.
컬렉션 p.390참고
<> : 제네릭 기법. -> 어레이리스트를 생성하는 순간에 저장할 자료형을 결정하는 기법.
레퍼런스 변수 형태, 객체 형태만을 저장할 수 있다. (기본형 자료형 저장 X)
1. 생성
ArraryList<String> list = new ArrayList<String>();
2. 값 넣기.
list.add("z")
list.add("a");
3. 값 삽임. 순번 지정안하면 순차적으로 들어감. list.add(원하는 순번, 데이터값)
list.add(1,"f"); <-두번째 배열에 f 데이터 값 추가.
4. 값 가져오기
System.out.println(list.get(0)); <-0번값 가져와서 출력하기.
5. 값 삭제하기.
list.remove(0);<-0번값 삭제.
6. 저장되어있는 데이터의 총 크기 출력
System.our.println(list.size());
7. 전체삭제
list.clear();
int[][] arr = new int[5][5];
int cnt = 21;
for (int j = 4; j >= 0; j--) {
for (int i = 4; i >= 0; i--) {
arr[j][i] = cnt;
cnt++;
}
}
for (int j = 0; j < 5; j++) {
for (int i = 0; i < 5; i++) {
System.out.print(arr[j][i]+"\t");
}
System.out.println();
}
출력결과 => 45 44 43 42 41
...(중략)
25 24 23 22 21
int[][] arr = new int[5][5];
int cnt = 21;
for (int j = 4; j >= 0; j--) {
for (int i = 4; i >= 0; i--) {
arr[j][i] = cnt;
cnt++;
}
}
for (int j = 0; j < 5; j++) {
for (int i = 0; i < 5; i++) {
System.out.print(arr[j][i]+"\t");
}
}
출력결과 => 45 44 43 42 41 39 38 37 ...(중략) 27 26 25 24 23 22 21