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
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("");
}
}

문제를 맞추면 문자 당 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);
}

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);
}
}
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;
}
}
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("");
}
}