배열, 향상된 for문

강정우·2022년 6월 25일
0

JAVA

목록 보기
5/31
post-thumbnail

문제

1.번

자바 코드
import java.util.Arrays;
import java.util.Scanner;

public class Q4 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("Type 3 integer type number : ");
		int num1 = scanner.nextInt();
		int num2 = scanner.nextInt();
		int num3 = scanner.nextInt();
//		int[] ary = new int[3];
//		ary[0]=num1;
//		ary[1]=num2;
//		ary[2]=num3;
//		Arrays.sort(ary);
//		System.out.println(ary[1]);
		if (num1 > num2 && num2 > num3 || num3 > num2 && num2 > num1) {
			System.out.println(num2);
		}
		if (num2 > num1 && num1 > num3 || num3 > num1 && num1 > num2) {
			System.out.println(num1);
		}
		if (num2 > num3 && num3 > num1 || num1 > num3 && num3 > num2) {
			System.out.println(num3);
		}

		scanner.close();

	}

}

중간에 빗금이 쳐저 있는 것은 파이썬 처럼 구현해 보고자 함.
각 변수를 배열에 넣어 sorted하여 중간값을 뽑아봄

파이썬 
import sys
a,b,c = map(int,sys.stdin.readline().split())
numary = [a,b,c]
numary.sort()
print(numary[1])

아무리 자바로 2개의 다른 문제 풀이를 적어서 코드가 길어졌다고 하지만 파이썬이 압도적으로 짧다. 자바를 계속 공부하며 느낀것은 파이썬이 너무 개발자 친화적이고 불편한 것은 딱 하나 ++ 함수가 없다는 것 뿐이었다....

2.번

자바
import java.util.Arrays;
import java.util.Scanner;

public class Q6 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("Type integer number 1~99 : ");
		int num = scanner.nextInt();
		String A = Integer.toString(num);
		char[] numary = A.toCharArray();
//		System.out.println(Arrays.toString(numary));
		if (num % 3 == 0) {
			System.out.println("CLAP! CLAP!");
		} else {
			for (char n : numary) {
				if (Character.compare(n, '3')==0 || n == '6' || n == '9') {
					System.out.println("CLAP!");
					break;					
				}
			}
		}
		scanner.close();
	}
}

이 코드에서 배울 것이 많았다.

1. int to string 과 string to int

그냥 변수 앞에 원하는 자료형을 붙이면 바뀌는 python과는 다르다.

  1. int to string
int 변수 = Integaer.pasrseInt(String s)
  1. string to int
String 변수 = Integer.toString(Int i)

2. 배열 출력

python 처럼 그냥 출력하면 안 된다.

  1. 반복문
for(n : n_arys){
System.out.println(n);}
#result
1
2
3
4
5
  1. java.util.Arrays class 용하기
import java.util.Arrays;
System.out.println(Arrays.toString(n_arys));
#result
[1, 2, 3, 4, 5]

3. 향상된 for문

  1. 배열 인덱스 문제를 해결할 수 있다. (ArrayIndexOutOfBoundsException 예외를 피할 수 있다.)

  2. 배열의 값을 수정할 수 없다!!

  3. 이차원 배열 원소 추출

String[][] arys = {{"가","나","다","라","마","바","사"},{"아","자","차","카","타","파","하"}}

for(String[] ary : arys){
	for(String i : ary){
    	System.out.print(i);
        }
	}
  1. ArrayList'<'String>
ArrayList<String> arys = new ArrayList<String>();
arys.add("가");
arys.add("나");
arys.add("다");
for(String s : arys) {
	System.out.println(s);			  
}
  1. ArrayList'<'Class>
public class Ex01{
	private String a;
    private int b;
    private int c;
    
    public String get()A{
    	reutrn a;
        }
    public void setA(String a){
    	this.a =a;
        }
    public int getB(){
    	return b;
        }
    public void setB(int b){
    	this.b = b;
    public int getC(){
    	return c;
       	}
    public void setC(int c){
    	this.c = c;
        }
}
ArrayList<Ex01> arys = new ArrayList<Ex01>;
Ex01 ex01 = new Ex01();
ex01.setA("A");
ex01.setB(2);
ex01.setC(3);
arys.add(ex01);

for(Ex01 s : arys){
	System.out.println(s.getA());
    System.out.println(s.getB());
    System.out.println(s.getC());

4. 문자 비교

  1. Character.compare() : 인수로 2문자를 취하고 같다면 0을,
    첫문자>두번째 문자 => 양수(+), 첫문자<두번째 문자 => 음수(-)
    따라서 이 함수를 사용하려면 3항연사자인 대수비교를 0과 하여 크면, 작으면을 통하여 true, flase를 하여 실행시킬 수 있다.
  2. ==
  3. String.matches()
{char alphabet = 'a';
	if (Character.toString(alphabet).matches("[a-z?]")) {
		System.out.println("The character matches");
	} else {
		System.out.println("The character does not match");
	}
}
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글