4-1. 条件文と重複文


繰り返し文を作成するときは、実行を続行するように注意してください.
open perspective -> debug -> disconnect all
後でsqlと一緒に使用すると、リソースが不足して実行できない可能性があります.

条件文if->連続データ(>,<...)の比較は、比較的簡単(1、2個比較100~90 A級)
if(条件)処理文;
if(条件)処理文;else処理文;<--1つの問題を扱うときに{}がなくても大丈夫~
(条件)?文の処理:文の処理;さんこうえんざんし

if(条件)処理文;else if(条件)else処理文;
public class IfElseIfElseExample {
	public static void main(String[] args) {

		int score = -100;

		// 100 넘는값, -값 이 들어오면 -> 잘못된값이 들어왔습니다.
		// 실제로는 100 넘을때 예외처리 해줘야함
		// score 100 ~ 90 : A

		
//		if (score > 100 || score < 0) {
//			System.out.println("점수오류 (점수는" + ((score > 100)? "100점 이상이":"0점 미만이") + "될 수 없습니다");
//			System.out.println("점수 : " + score);
//		}
//		else {
			
		// if (score > 100) { if(score >= 90) ~~ } 연속되 if문 가능
		//-> if (score > 100 && score >= 90) {  ~~ } 따로 비교할것이 더 없다면 동시에 가능

		if (score > 100) {
			System.out.println("점수오류(점수는 100점 이상이 될 수 없습니다.)");
			System.out.println("점수 : " + score);
		}

		else if (score >= 90) {
			System.out.println("점수가 100~90 입니다.");
			System.out.println("점수 : " + score + ", A ");
		} 
		else if (score >= 80) { // else if : 위에 if가 아니면 = 90보다 작다
			// else if 문은 90 > score >= 80 이다
			System.out.println("점수가 90~80 입니다.");
			System.out.println("점수 : " + score + ", B ");

		}
		else if (score >= 70) { // else if : 위에 if가 아니면 = 80보다 작다
			// else if 문은 80 > score >= 70 이다
			System.out.println("점수가 80~70 입니다.");
			System.out.println("점수 : " + score + ", C ");
		}
		else if(score >= 0){
			System.out.println("점수가 70 미만 입니다.");
			System.out.println("점수 : " + score + ", D ");
		}
		else {
			System.out.println("점수오류(점수는 0점 미만이 될 수 없습니다.");
			System.out.println("점수 : " + score);
		
		}

	}
}

switch:非連続データ、数値比較、boolean、char、String(==比較可能なjava 1.6以上)
swich(num){
Case 1:~//num==1//非連続データ(同==比較)
case 2: ~
default://ifの場合else
}
//:<-ラベル-移動先を指定-構造化プログラムから距離があるため、あまり好きではありません
//break; switch文が飛び出していない場合、起動したcaseは次の順序で実行されます.
//breakプログラムを停止して終了するために使用->switch,repeat(for,while)
//if無効
break=switch,for,while(whileのみ)/ifが存在する場合、while文は終了します.

public class SwitchExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//주사위놀이
		//1~6까지의 숫자중 하나를 랜덤으로 나오게 만들어서 나타난 숫자를 출력해 보자.
		// == 비교(비연속 데이터) : if ~ else if~ 처리 가능, switch case1: case2: ~ default 로도 가능
		//여러개 일때는 switch가 효과적 
		
		//랜덤 숫자 만들기 Math.random() <-- java.lang 안에 기본으로 있어서 import 없어도 가능
		//0~ 1보다 적은 값(실수포함)을 선언 / 0 <= n < 1   / 0.xx
		//얻고 싶은 수까지 곱하기 해라 / 1~10까지면 곱하기10 + 1
		//double 인 Math.random()값을 정수로 캐스팅 
		//1~6까지 숫자 + 1  // 로또 *45 +1
 		int num = (int)(Math.random()*6) + 1;
		System.out.println(num);
		
		// : <- 라벨 - 특정 위치로 이동하고 싶을 때 위치 지정 -구조화된 프로그램과는 거리가 있어서 잘 안씀
		// break; switch 문 밖으로 나감 없으면 시작된 case 다음 순차대로 계속 실행됨
		//break 는 프로그램 진행을 멈추고 빠져나간다 -> switch, 반복(for, while) 에서 사용됨 
       // if는 사용 안됨
		switch(num) {
		//nun == 1 때 이동 위치 case 1
		case 1:
			System.out.println("1번이 나왔습니다.");
			break;
		case 2:
			System.out.println("2번이 나왔습니다.");
			break;
		case 3:
			System.out.println("3번이 나왔습니다.");
			break;
		case 4:
			System.out.println("4번이 나왔습니다.");
			break;
		case 5:
			System.out.println("5번이 나왔습니다.");
			break;
		case 6:
			System.out.println("6번이 나왔습니다.");
			break;
			
		default :
			//위 조건에 다 맞지 않거나 break가 없는 경우 실행
			System.out.println("주사위 번호가 아닙니다.");
			break;
		}
	}

}

文字列は「」でなければなりません.
case "list":{ }

*ALT+方向キー:選択した行コードを移動

4つの文字列のうち1つしか受け入れられません
list
view
write
update
delete
その他-無効なコマンド-

import java.util.Scanner;

public class StringSwitchExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 1. Scanner 생성
		Scanner sc = new Scanner(System.in);
		
		// 2. 명령어 입력 안내 출력
		System.out.println("명령어를 입력해주세요 (list, view, write, update, delete)");
		
		// 3.명령어 입력 받기 nextLine -> string변수에 저장
		String command = sc.nextLine();
		
		// 4. switch -> 게시판 리스트(보기,쓰기,업데이트,삭제) 처리
		// 4-1. 잘못된 명령을 입력하였습니다
		switch(command) {
		case "list":
			System.out.println("게시판 리스트 처리");
			break;
			
		case "view":
			System.out.println("게시판 보기 처리");
			break;
		case "write":
			System.out.println("게시판 쓰기 처리");
			break;
		case "update":
			System.out.println("게시판 수정 처리");
			break;
		case "delete":
			System.out.println("게시판 삭제 처리");
			break;
			
		default:
			System.out.println("잘못된 명령어 입니다");
			break;
		}
		sc.close();
		
		// 5. scanner 를 닫기 - 자원 회수 / 데이터베이스 사용시에도 같이 닫아라
	}

}
メインメニュー-文字列としてMainExample数字を入力(Stringと入力)/出力/数値を1回入力すると入力できます

  • 公告事項掲示板

  • 質問への回答の最後の部分
  • 以外のエラーメニューを選択しました.

  • スキャナ作成

  • メニュー出力

  • 入力メニュー

  • 入力されたメニューの処理

  • スキャナを閉じる
  • import java.util.Scanner;
    
    public class MainExample {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		Scanner sc =new Scanner(System.in);
    		
    		System.out.println("메뉴를 선택해 주세요 "+ "\n" +"1. 공지사항   2. 게시판" + "\n" + "3. 질문답변   0. 종료");
    		
    		String str = sc.nextLine();
    		
    		switch (str) {
    			
    		case "1":
    			System.out.println("1. 공지사항");
    			break;
    			
    		case "2":
    			System.out.println("2. 게시판");
    			break;
    			
    		case "3":
    			System.out.println("3. 질문답변");
    			break;
    			
    		case "0":
    			System.out.println("0. 종료");
    			break;
    			
    			default :
    				System.out.println("잘못된 메뉴를 선택하셨습니다.");
    		}
    		
    		sc.close();
    	}
    
    }
    try,catchは文字列にスナップ->数値に変換されませんが、エラー->continueがあります.rocatchが発生した場合、for文を返して出力します
    エラーなしで強制実行すると、数値実行の問題が発生します.
    文字入力時に0回で出力
    実際には必要ありませんが...好奇心を持ってやる
    import java.util.Scanner;
    
    public class MainExample3TryCatchFor {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		int num1 = 0;
    		Scanner sc = new Scanner(System.in);
    
    		loop_while: while (true) {
    
    			System.out.println("메뉴를 선택해 주세요 " + "\n" + "1. 공지사항   2. 게시판" + "\n" + "3. 질문답변   0. 종료");
    
    			// if 로 문자입력시 line , 숫자입력시 int 로 구분이 먼저
    			// 의미가 있는가? 결국 받는것은 String으로 들어옴 / int 로 들어오면 에러 나서
    			String str = sc.nextLine();
    
    			try {
    				num1 = Integer.parseInt(str);
    
    			} catch (NumberFormatException e) {
    				System.out.println("문자를 입력");
    				continue;
    				// 다시 위로 올라가서 입력해라 라는 명령문이 필요함 -> default로 안감
    				// 처음으로 가면 0.이 안뜸 continue 로 사용
    				// return 안넣으면 0. 종료 가 같이 뜸 메소드 끝내버리는 return 넣으면 종료시킬수 있음
    				// 그럼 다시 반복이 안됨
    			}
    
    			switch (num1) {
    
    			case 1:
    				System.out.println("1. 공지사항");
    				break;
    
    			case 2:
    				System.out.println("2. 게시판");
    				break;
    
    			case 3:
    				System.out.println("3. 질문답변");
    				break;
    
    			case 0:
    				System.out.println("0. 종료");
    				break loop_while;
    
    			default:
    				System.out.println("잘못된 메뉴를 선택하셨습니다.");
    				break;
    
    			}
    
    		}
    		sc.close();
    
    	}
    
    }
    反復文for(1.初期値;2.反復条件;4.増減){3.処理文;}
    1.標準
    int i = 0;
    for(i;2.繰返し条件;4.増減){3.処理文;}
  • 変形(1)
  • int i = 0;
    for(i;2.繰り返し条件;){

  • しょり文

  • 増減外注可能
  • }

    ->while文
    int i = 0; -1番
    while(2.繰り返し条件){

  • しょり文

  • 増減外注可能
  • }
    for(;;) あまり使わない様子がおかしい.
    int i = 0; 1.条件(ない場合もある)
    for( ; ; ) <- 無限反復処理{
    2 .繰り返し条件とは逆(終了条件を与えて中断する;終了を使用する)

  • しょり文

  • 増減外注可能
  • }

    ->while無限ループ
    int i = 0; 1.条件(ない場合もある)
    while(true)<-無限繰返し処理{
    2 .繰り返し条件とは逆(終了条件を与えて中断する;終了を使用する)

  • しょり文

  • 増減外注可能
  • }



    列を数える
    1 + 2 + .... + 10

    スコアデータは不連続です(複数のデータが不連続の場合は配列で処理します)
    100, 95, 70
    初期値を知っている人は、すぐに書くことができます.
    int score[] = {100, 95, 70}
    {100,95,70}保存して保存したアドレスをscoreに入れる
    文字長-1でインデックスを検索
    i = [0]

    二重小数点で切り捨てたものではありません
    2回int iと宣言しても、領域変数forとしてアクティブになり、エラーなく削除されます.

    アルゴリズム数列問題
    方法で条件文を書くと、このような問題も起こります.
    public class ForArrayExample {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		//100, 95, 70 점 총합
    		int score[] = {100, 95, 70};
    		
    		
    		for(int i = 0 ; i <= score.length-1; i++) {
    			
    			System.out.println(score[i]);
    		}
    		// int 로 i 두번 선언해도 지역변수로 for 안에서만 활동 가능하고 삭제되어 에러 안난다
    		int sum = 0;
    		for(int i = 0 ; i < score.length; i++) {
    			sum += score[i];
    			
    		}
    		System.out.println(sum);
    		System.out.println("sum / length = " + ((double)sum/score.length));    
    		//평균 구하기 앞에 문자열 있어서 () 무끙ㅁ
    		// double 끝자리 에 반올림으로 올린것이 아니다
    	}
    
    }
    foreach(foreach,alt+spaceと書く)
    アレイ内のすべてのデータを処理する必要があります.
    =>foreach:配列データを順番に繰り返すたびに1つ取り出し、宣言された変数に入れて処理します
    scoreを作成し、score配列を順番に挿入
    上部[0]からタイルをポップアップ
    for (int score : scores) {
    			System.out.println(score);
    		}
    		
    		// foreach 를 이용해서 sum 을 구해라
    		sum = 0;
    		for (int score : scores) {
    			sum += score;
    						
    		}
    		System.out.println("foreach 를 활용한 합계 : " + sum);
    無限反復文
    しゅつりょく
  • whileは繰り返し文を終了させ、自然に終了させる.
  • 1-1 break->loop whileを使用します.
    外に出ながら、メインエンドのところへ.
    //switch、for、whileに属するコード
    //switchは終了するしかありません->外でwhileはもう一度終了します
    //while文が始まる前にloop while:->case 0のbreakloop whileを指定します.完了後、ラベルを貼るとbreakで終了


    2.メインに戻る()
    sc.close();
    return; 氷刀を折り返し車に閉じ込めなければならないが、メイン駅を越えることはできない.


  • 強制終了JRE
    sc.close();
    System.exit(0); 番組を終わらせる.0は正常終了、残りは非正常
  • import java.io.IOException;
    import java.util.Scanner;
    
    public class WhileExample {
    
    	public static void main(String[] args) throws IOException {
    //		int i = 1;
    //		
    //		
    //		while(i <= 10) {
    //			System.out.println(i);
    //			i++;
    //			//증가 시켜줘야 무한루프 안돈다ㅋㅋㅋㅋ
    //		}
    //		for(int j = 1; j<= 10; j++) {
    //			System.out.println(j);
    //		}
    		
    		//메뉴 만들기 반복문을 이용하여
    		//사이트의 시작입니다. <- 출력
    		
    		
    		System.out.println("사이트의 시작입니다.");
    		
    		Scanner sc = new Scanner(System.in);
    		
    		System.out.println("========== [ 사이트에 방문하신 것을 환영합니다. ] =============");
    		
    		
    		//메뉴 처리한다.
    		//메뉴 출력~ 입력 처리 까지 무한반복
    		
    		//while 문 안에 이름표 붙여높음
    		loop_while:    //-1번 방법
    		
    		while(true) {
    			//메뉴 출력
    			System.out.println("<< Main menu >>");
    			System.out.println("-----------------------------------------------------");
    			System.out.println("메뉴를 선택해 주세요" + "\n" +"1. 공지사항   2. 게시판  3. 이미지" + "\n" + "4. 질문답변  5. 회원관리  0. 종료");
    			System.out.println("-----------------------------------------------------");
    
    			//메뉴 입력 받는다.
    			System.out.println("메뉴 입력 ->");
    			String menu = sc.nextLine();
    			//if 문은 equals 로 비교한다
    			
    			
    			switch (menu) {
    			case "1":
    				System.out.println("1. 공지사항 처리함.");
    				break;
    			case "2":
    				System.out.println("2. 게시판 처리함");
    				break;
    			case "3":
    				System.out.println("3. 이미지 처리함.");
    				break;
    			case "4" :
    				System.out.println("4. 질문답변 처리함");
    				
    				break;
    			case "5" :
    				System.out.println("5. 회원관리 처리함");
    				
    				break;
    			case "0" :
    				System.out.println("0. 프로그램 종료");
    				
    				break loop_while;   //-- 1번 방법  
    				
    				//switch, for ,while 중 소속되어 있는곳 빠져나가는 코드
    						//switch 만 빠져나감 -> 밖에서 while 한번더 빠져나가야함
    	//while문 시작 전에 loop_while: 지정 -> case 0 번 에 break loop_while; 해주면 라벨 붙이면 break 로 종료됨
    				
    
    				
    				
    				//while 무한 반복문
    				//나오는법
    				//1. while 반복문을 빠져 나가게 해서 자연 종료 되게 한다.
    				//1-1 break 사용 -> loop_while:
    				//while 빠져나가서 메인 끝나는 곳으로 빠져나감 
    				
    				//2.main()을 빠져 나가게 return 시킨다
    				//sc.close();
    				//return;  2번 리턴 쓰는방법 스케너 close 를 리턴 위에 해줘야함 메인까지 안넘어가서 
    				
    				
    				//3. 프로그램 종료하는 처리를 시킨다 JRE 강제 종료
    //				sc.close();
    //				System.exit(0);// 프로그램 종료 시킨다. 0은 정상종료 나머지는 비정상
     
    			default :
    				
    				System.out.println("***************************************");
    				System.out.println("메뉴를 잘못 입력하였습니다.1~5, 0 중에서 하나를 입력해 주세요.");
    				System.out.println("***************************************");
    				break;
    			}//end of switch case
    			//1번 방법
    			//빈줄 한개 넣기
    			System.out.println();
    			
    			
    			
    		}// end of while(true)
    		sc.close();
    		
    	}// end of main()
    }
    繰り返し文の最初のコード(while,for)switch,ifを返します.
    continue;

    --データ通信でよく使われています(リポジトリがいっぱいになったら、一度上がってみる~という感じ)
    バッファでは、書き込みデータが解放されず、アップシフトが要求される場合
    
    public class ContinueExample {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		//1~10 숫자 중에서 짝수를 출력하는 프로그램 작성
    		// 수열 은 for 가 쓰기 좋음
    		
    		
    		for (int i = 1; i <= 10; i++) {
    
    			// 홀수이면 아래를 실행하지 말고 반복문의 맨처음 으로 이동하자 -continue
    			if (i % 2 != 0)
    				continue;
    			
    			System.out.println(i);
    		}
    
    		//2의 배수를 출력
    		for (int i = 2; i <= 10; i += 2) System.out.println(i);
    		
    		// 1~10까지 출력한다 - 3개씩 한줄에
    		for (int i = 1; i <= 10; i += 1) {
    			System.out.print(i + "  ");
    			//i 가 3까지는 찍혀야함
    //			if(i % 3 == 0){
    //				System.out.println();
    //			}
    			
    			if(i % 3 != 0)continue; {
    				System.out.println();
    			}
    		}
    	}
    }