Java 3일차 : Case, 난수발생, 문자열

Case 문

  • case 내 에서는 가급적 변수선언은 하지 않는게 좋다

    꼭 해야한다면 {} 로 구역을 정해주고 하자

package test.day0405;

import java.util.Scanner;

public class switchEx1 {

  public static void main(String[] arg) {
    Scanner sc = new Scanner(System.in);
    int num = 0;
    System.out.println("숫자를 입력하세요.");
    num = sc.nextInt();

    switch(num) {

      case 1:
        {
          int a = 10; //부득이 변수를 내부에 선언하고 싶다면 꼭 구역설정{}을 해주자.
          System.out.println("No. 1");
          break;
        }
      case 2:
        System.out.println("No. 2");
        break;
      case 3:
        System.out.println("No. 3");
        break;
      default:
        System.out.println("not 1,2 or 3");
    }
  }
}

예제

  • switch문에서 1바이트 문자 가능, 문자열도 가능 (문자열은 Java7.0부터 가능)
package test.day0405;
import java.util.Scanner;
public class switchEx2 {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc = new Scanner(System.in);
    String str = "";
    System.out.println("영문 문자열을 입력해주세요.");
    str = sc.nextLine();
    //문자열에서 한글자만 얻는 메소드 : charAt(str)
    switch(str.charAt(0)){
      case 'a':
      case 'A':
        System.out.println("begin with an A");
        break;
      case 'b':
      case 'B':
        System.out.println("begin with a B");
        break;
      default:
        System.out.println("It's not an A or B");
    }
    System.out.println("jdk7.0부터는 switch문에서 문자열이 가능해졌다.");
    switch(str) {
      case "apple":
        System.out.println("It's an apple");
        break;
      case "banana":
        System.out.println("It's a banana");
        break;
      default:
        System.out.println("want another fruit!");
    }
  }
}

난수

  1. Math.random() 이용하기
  2. Random 클래스 이용하기
package test.day0405;

public class randomEx3 {

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    for(int i=1 ; i<=10 ; i++) {
      double r = Math.random();
      System.out.println(r);
    }
    System.out.println("0~9");
    for(int i=1 ; i<=10 ; i++) {
      int r = (int)(Math.random()*10);
      System.out.println(r);
    }
    System.out.println("65~90"); //대문자 난수발생
    for(int i=1 ; i<=10 ; i++) {
      int r = (int)(Math.random()*26 + 65);
      System.out.printf("%3c",r); //문자로출력 
    }
  }
}

실습문제

  1. 반복횟수에 대한 문제(다중 for문)

♥♥

♥♥♥

♥♥♥♥

♥♥♥♥♥

♥♥♥♥

♥♥♥

♥♥

  1. 숫자를 입력하면 1부터 그 숫자까지 합계를 구하시오(for)

  2. 1~100사이의 난수를 발생시킨 후 그 숫자 알아맞추기(Math.random() & while)

  3. 두개의 숫자 x, y를 입력하면 x의 y승을 구하시오(for문 이용)

-------------------------------------testEx1
package test.day0405;
public class testEx1 {
  public static void main(String[] args) {
    for(int i=1 ; i<=10 ; i++) {
      for(int j=1 ; (j<=i && i<=5) || ( i>5 && j<=11-i) ; j++) {
        System.out.print("♥");
      } 
      System.out.println("");
    }}}

-------------------------------------testEx2

package test.day0405;
import java.util.Scanner;
public class testEx2 {

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc = new Scanner(System.in);
    System.out.println("숫자를 입력하세요.");
    int num = sc.nextInt();
    int sum = 0;
    for(int i=1 ; i<=num ; i++) {
      sum += i;
    }
    System.out.println("1부터 " + num + "까지의 합은" + sum + "입니다.");
  }}

-----------------------------------testEx3

package test.day0405;
import java.util.Scanner;
public class testEx3 {

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    int rand = 0;
    int num = 0;
    Scanner sc = new Scanner(System.in);
    while(true) {
      rand = (int)(Math.random()*100);
      System.out.println("1부터 100까지의 숫자를 입력하세요.");
      num = sc.nextInt();
      System.out.println("rand: " + rand + ", your number: " + num);
      if(num == rand) {
        System.out.println("맞췄습니다!");
        break;
      }else {
        System.out.println("틀렸습니다!");
      }} 
  }
}

--------------------------------------testEx4

package test.day0405;
import java.util.Scanner;
public class testEx4 {

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc = new Scanner(System.in);
    int num1 = 0;
    int num2 = 0;
    int result = 1;
    System.out.println("숫자 두개를 입력해주세요.");
    num1 = sc.nextInt();
    num2 = sc.nextInt();
    for( int i=1 ; i<=num2 ; i++) {
      result *= num1;
    }
    System.out.println(num1 + "의 " + num2 + "승은 " + result + "입니다."); 
  }
}

------------------------------------testEx5

package test.day0405;
public class testEx5 {
  public static void main(String[] args) {

    for(int i=2 ; i<=9 ; i++) {
      String str = "[ " + i + " th ]";
      System.out.printf("%-15s", str);
    }

    System.out.println();

    for(int i=1 ; i<=9 ; i++) {
      for(int j=2 ; j<=9 ; j++) {
        String str = "";
        str = j + " x " + i + " = " + (i*j);
        System.out.printf("%-15s",str);
      }

      System.out.println();
    }
  }
}

문자열

봐도봐도 새로운 String Class API

예시

package test.day0405;
public class stringEx6 {
  public static void main(String[] args) {
    String s1 = "Have a Nice Day";
    String s2 = "red,blue,yellow,white";
    String s3 = "     hello     ";
    String a = "Apple";
    String b = "apple";
    System.out.println("length(): " + s1.length());
    System.out.println("charAt(7): " + s1.charAt(7));
    System.out.println("indexOf('n'): " + s1.indexOf('n'));
    String[] arr = s2.split(","); //문자열을 특정 문자로 분리 (배열타입을 반환)

    for(String s:arr)
      System.out.println(s);

    System.out.println("replace: " + s1.replace("a","*"));
    System.out.println("startsWith: " + s1.startsWith("have"));
    System.out.println("endsWith: " + s1.endsWith("day?")); //완전히 같아야 트루.
    System.out.println("s3's length is " + s3.length() + " After Trim: " + s3.trim().length());
    System.out.println("substring: " + s2.substring(9));
    System.out.println("get nice from s1: " + s1.substring(7,11)); 

    //substring(시작인덱스, 끝인덱스+1)
    System.out.println("toLowerCase: " + s1.toLowerCase());
    System.out.println("toUpperCase: " + s1.toUpperCase());
    System.out.println("valueOf: " + String.valueOf('a')); //static 이라서 앞에 String붙혀줌

    //equals : 문자열 값 비교
    System.out.println(a.equals(b)); //대소문자가 달라서
    System.out.println(a.equalsIgnoreCase(b));
  }
}

실습문제

  1. 영문 문자열을 입력받은 후 소문자는 대문자로, 대문자는 소문자로 변경하여 출력하시오(for)
  2. 1!~10! 까지 출력하시오(for)

  3. 영문 문자열을 입력받아 숫자의 갯수와 알파벳의 갯수를 출력하시오

  4. 3자리 숫자의 합이 10이 나오는 숫자를 모두 구하시오. (for문 3번)
---------------------------------------------------------testEx6
package test.day0405;
import java.util.Scanner;
public class testEx6 {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String str;
    System.out.println("영문 문자열을 입력하세요.");
    str = sc.nextLine();

    for(int i=0 ; i <= str.length()-1 ; i++ ){
      char ch = str.charAt(i);
      if(ch >='A' && ch <='Z') {
        ch += 'a' - 'A';
        System.out.print(ch);
      }else if(ch >= 'a' && ch <= 'z'){
        ch -= 'a' - 'A';
        System.out.print(ch);
      }else {
        System.out.print(ch);
      }
    }
  }

}
--------------------------------------------------------testEx7
package test.day0405;
public class testEx7 {
  public static void main(String[] args) {
    for(int i = 1 ; i <=10 ; i++ ) {
      int result = 1;
      System.out.print(i + "! = ");
      for(int j = 1 ; j <= i ; j++ ) {
        result *= j;
      }
      System.out.print(result);
      System.out.println();
    }

  }

}
--------------------------------------------------------testEx8
package test.day0405;
import java.util.Scanner;
public class testEx8 {
  public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    String str = "";
    System.out.println("문자열을 아무거나 입력해보세요.");
    str = sc.nextLine();
    int num = 0;
    int alpha = 0;

    for(int i=0 ; i <= str.length()-1 ; i++) {
      char ch = str.charAt(i);
      if(ch >= '0' && ch <='9') {
        num++;
      }else if( (ch >='a' && ch <= 'z' ) || (ch >= 'A' && ch <= 'Z')) {
        alpha++;
      }
    }
    System.out.println("numbers: " + num + "개 " + "alphabets: " + alpha + "");
  }

}
-------------------------------------------------testEx9
package test.day0405;
public class textEx9 {
  public static void main(String[] args) {
    for(int i=1 ; i < 10 ; i++) {
      for(int j=0 ; j <10 ; j++) {
        for(int k=0 ; k <10 ; k++) {
          if( i + j + k == 10 ) {
            System.out.printf("%d%d%d\n",i,j,k);
}}}}}}

Categories:

Updated:

Comments