0321 Java is NOT easy

Fifty·2025년 3월 21일

2. JAVA

목록 보기
10/33

대문자나 소문자로 변환

A배열 {'A','b','C','d','E'}
출력1: ABCDE
출력2: abcde

UpperCase랑 LowerCase만들기

package ex01;

public class Text0321 {

	public static void main(String[] args) {

		char[] arr = {'A','b','C','d','E'};
		
		System.out.print("모두 소문자로: "); lower(arr);
		System.out.print("모두 대문자로: "); upper(arr);
		
	}
	
	static void lower(char[] arr) {
		for(int i=0; i<arr.length; i++) {
			if(arr[i]<91) 		
				System.out.print((char)(arr[i]+32));
			else
				System.out.print(arr[i]);
		}
		System.out.println("");
	}
	
	static void upper(char[] arr) {
		for(int i=0; i<arr.length; i++) {
			if(arr[i]>90)
				System.out.print((char)(arr[i]-32));
			else
				System.out.print(arr[i]);
		}
		System.out.println("");
	}	
}

대문자는 소문자로, 소문자는 대문자로

	static void upAndLower(char[] arr) {
		for(int i=0; i<arr.length; i++) {
			if(arr[i]>90) // 소문자면
				System.out.print((char)(arr[i]-32));
			else		// 대문자면
				System.out.print((char)(arr[i]+32));
		}
		System.out.println("");
	}	

대문자와 소문자의 차이는 32이다.
알파벳 순서를 출력하고 싶을 때 활용해도 된다.

0: 48
A: 65
a: 97

Java Is easy


Call character >>

ascii 코드 번호를 입력했을 때, 97
aa *a
이런식으로 나오게 하는 프로그램

!필요한 것
문제가 들어가 있는 배열 str
str을 복사한 배열 copyStr 대신 띄어쓰기 빼고는 별표로 표시
문제(별표) 갯수와 맞춘 갯수 → 반복문 제어

package ex01;

import java.util.Scanner;

public class Test0321_2 {

	static int cntProblem=0;	// 정답 갯수
	static int cntAnswer=0;		// 맞춘 갯수
	static char[] str = {'J','a','v','a',' ','i','s',' ','e','a','s','y'};
	static char[] copyStr = new char[str.length];	// 정답을 복사해서 *로 표시해주는 배열
	static Scanner sc = new Scanner(System.in);
	
	public static void main(String[] args) {
		
		copyStr();							// str배열을 복사하고 문제(*) 출력해주기
		while(cntProblem>cntAnswer) {		// 문제(*)갯수가 맞춘 개수보다 많을 때까지
			inputAnswer();					// 계속 정답을 입력받기
		}
		
	}
	
	// str을 copyStr에 복사하고 출력해주기
	static void copyStr() {
		for(int i=0; i<str.length; i++)
			if(str[i]!=' ') {					// 공백이 아니면
				copyStr[i]='*';					// *로 저장
				System.out.print(copyStr[i]);	// 문제 프린트
				cntProblem++;					// 문제 갯수 카운트
			}
			else {
				copyStr[i]=' ';					// 공백은 그대로 저장&출력
				System.out.print(copyStr[i]);
			}
	}
	
	// 숫자를 입력받는 함수
	static void inputAnswer() {
		System.out.println("");
		System.out.println("Call character >> ");
		int input = sc.nextInt();
		check(input);
	}
	
	// 입력받은 숫자를 이용해 정답을 출력해주는 함수
	static void check(int input) {
		for(int i=0; i<str.length; i++) 
			if(str[i]!=' ') 
				if(str[i]==input) {
					copyStr[i]=str[i]; 		// 맞추면 *을 해당 문자로 변환해서 저장
					cntAnswer++;			// 맞춘 갯수 증가
				}
		printCopy();						// 지금까지 맞춘 배열 출력
	}
	
	// 문제(*) 중에서 맞춘 부분을 출력해주는 함수 
	static void printCopy() {
		for(int i=0; i<copyStr.length; i++)
			if(str[i]==' ')
				System.out.print(" ");
			else 
				System.out.print(copyStr[i]);
		System.out.println("");
	}
}

Java is easy의 변형

문제를 맞추면 문자 당 10점
a의 경우 3개이므로 30점

→ score 변수만 추가해주기

	static void check(int input) {
		for(int i=0; i<str.length; i++) 
			if(str[i]!=' ') 
				if(str[i]==input) {
					score+=10;
					copyStr[i]=str[i]; // 맞추면 *을 해당 문자로 변환
					cntAnswer++;
				}
		printCopy();
	}
	
	// 복사한 정답을 출력해주는 함수 
	static void printCopy() {
		for(int i=0; i<copyStr.length; i++)
			if(str[i]==' ')
				System.out.print(" ");
			else 
				System.out.print(copyStr[i]);
		System.out.println("");
		System.out.println("점수: "+score);
	}

char[]이 아닌 String으로 바꿔서 하기

String[]로 copy해준다.

package ex01;

import java.util.Scanner;

public class Test0321_3 {

	static int cntProblem=0;	// 정답 갯수
	static int cntAnswer=0;		// 맞춘 갯수
	static String str = "Java is easy";
	static String[] copyStr = new String[str.length()];
	static Scanner sc = new Scanner(System.in);
	static int score = 0;		// 문제 맞추면 문자 당 점수 +10
	
	public static void main(String[] args) {
		
		copyStr();
		while(cntProblem>cntAnswer) {
			inputAnswer();
		}
		
	}
	
	// str을 copyStr에 복사하고 출력해주기
	static void copyStr() {
		for(int i=0; i<str.length(); i++)
			if(str.charAt(i)!=' ') {
				copyStr[i]="*";
				System.out.print(copyStr[i]);
				cntProblem++;
			}
			else {
				copyStr[i]=" ";
				System.out.print(copyStr[i]);
			}
	}
	
	// 숫자를 입력받는 함수
	static void inputAnswer() {
		System.out.println("");
		System.out.println("Call character >>  ");
		int input = sc.nextInt();
		check(input);
	}
	
	// 입력받은 숫자를 이용해 정답을 출력해주는 함수
	static void check(int input) {
		for(int i=0; i<str.length(); i++) 
			if(str.charAt(i)!=' ') 
				if(str.charAt(i)==input) {
					score+=10;
					copyStr[i]=String.valueOf(str.charAt(i)); // 맞추면 *을 해당 문자로 변환
					cntAnswer++;
				}
		printCopy();
	}
	
	// 복사한 정답을 출력해주는 함수 
	static void printCopy() {
		for(int i=0; i<copyStr.length; i++)
			if(str.charAt(i)==' ')
				System.out.print(" ");
			else 
				System.out.print(copyStr[i]);
		System.out.println("");
		System.out.println("점수: "+score);
	}
	
}

static의 활용

class 내부에서도 static으로 선언해주면 전역에서 사용 가능하다.

  • 제약조건
    static 메소드는 static 멤버만 접근할 수 있다.
    static 메소드는 this를 사용할 수 없다. ∵static 메소드는 객체없이도 존재

  • 그럼 this란?
    현재 객체 자신에 대한 레퍼런스이다.
    언제 사용하나? 매개변수의 이름을 멤버 변수와 같은 이름으로 붙일 때! for 가독성

public example(int radius) {
	this.radius = radius;
}

this.radius는 멤버 radius이고, 값으로 사용된 radius는 매개변수이다.

문제(빈칸 채우기)

1111이 출력되어야 함.

package ex01;

public class Test0321_4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n=1;
		int result =f(n);
		System.out.println(result);
	}

	static ____ f(____) {
		int n=10;
		____
	}
	
	static ____ f2(____) {
		int n=100;
		____
	}
	
	static ____ f3(____) {
		int n=1000;
		____
	}
	
	static ____ f4(____) {
		return param1 + param2 + param3 + param4;
	}
}

정답

package ex01;

public class Test0321_4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n=1;
		int result =f(n);
		System.out.println(result);  // 정답은 1111
	}

	static _int_ f(_int param1_) {
		int n=10;
		_return f2(param1,n);_
	}
	
	static _int_ f2(_int param1, int param_2) {
		int n=100;
		_return f3(param1, param2, n);_
	}
	
	static _int_ f3(_int param1, int param2, int param3_) {
		int n=1000;
		_return f4(param1, param2, param3, n);_
	}
	
	static _int_ f4(_int param1, int param2, int param3, int param4_) {
		return param1 + param2 + param3 + param4;
	}
}

배열을 복사하는 함수

  1. 처음부터 끝까지 복사하는 함수
  2. 배열의 인덱스를 선택할 수 있다.(어디부터 어디까지)
package ex01;

public class Test0321_5 {

	public static void main(String[] args) {
		
		int[] arr = {1,2,3,4,5,6,7,8,9,10};
		
		copyAll(arr);
		copyIndex(arr, 1, 3);
	}
	
	// 처음부터 끝까지 복사하는 함수
	static void copyAll(int[] arr) {
		int[] copyarr = new int[arr.length];
		for(int i=0;i<arr.length;i++) {
			copyarr[i]=arr[i];
			System.out.print(copyarr[i] + " ");
		}
		System.out.println("");
	}
	
	// 배열의 인덱스를 선택할 수 있다. 어디서부터 어디까지?	
	static void copyIndex(int[] arr, int start, int end) {
		int[] copyarr = new int[end-start+1];
		int idx=0;
		for(int i=start;i<=end;i++) {
			copyarr[idx]=arr[i];
			System.out.print(copyarr[idx] + " ");
		}
		System.out.println("");
	}
}

0개의 댓글