자바프로그래밍 입문 연습문제 #4

파핑·2022년 4월 28일
0

JAVA PROGRAMMING

목록 보기
11/12
post-thumbnail

연습문제 4일차


Q1.알파벳 출력예제에서 각 배열의 요소값을 소문자로 변환해 출력하세요.

(오타인지 모르겠으나 이미 대문자인 것을 대문자로 변환하라 적혀 있어 임의로 소문자로 바꿔 풀었다.)
앞에서 배운 알파벳 출력예제를 대문자에서 소문자로 바꿔 프로그래밍해보는 문제이다.
앞에서 대문자 알파벳 출력문제를 먼저 살펴보자.

public static void main(String[]args) {
  char[ ] alphabets = new char[26];
  char ch = 'A'
  
  for(int i = 0; i <alphabets.length; i++,ch++) {
    alphabets[i] = ch;
  }
  
  for(int i = 0; i <alphabets.length; i++){
    system.out.println(alphabets[i] + "," + (int alphabets[i]);
  }
}

이렇게 코드를 짠 뒤에 프로그램을 돌려보면

위 처럼 대문자 알파벳들과 아스키 코드값들이 출력된다.
그럼 이를 소문자로 바꿔 출력하려면 char ch = 'A'부분에서 'A''a'로 바꿔 입력해주면 된다.

public static void main(String[]args) {
  char[ ] alphabets = new char[26];
  char ch = 'a'
  
  for(int i = 0; i <alphabets.length; i++,ch++) {
    alphabets[i] = ch;
  }
  
  for(int i = 0; i <alphabets.length; i++){
    system.out.println(alphabets[i] + "," + (int alphabets[i]);
  }
}

출력 값을 보면 다음과 같다.

++

정답을 보니 내가 잘못 이해한 문제인 것같다. 차근차근 다시 봐보자.

일단 임의로 고쳤던 문제를 다시 살펴보자.

Q1.알파벳 출력예제에서 각 배열 요소 값을 소문자에서 대문자로 변환해 출력하세요.

(힌트!A의 아스키 값은 65, a의 아스키 값은 97이므로 두 문자는 32만큼 차이가 난다.)

배열의 요소값을 소문자에서 대문자로 변환해 보라고 하는데 이미 요소값은 대문자인데...

아마도 대문자에서 소문자로 변환해 보라는 것이 맞는 것 같고 위에서 먼저 풀이한 것처럼 단순히 'A'를 'a'로 바꾸는 것이 아니라 힌트에 나온 값(32)를 결과 값에 더해 푸는 것 같다.


	public static void main(String[] args) {
		char[] alphabets = new char[26];
		char ch = 'A';
		
		for(int i = 0; i <alphabets.length; i++,ch++) {
			alphabets[i] = ch;
		}
		
		for(int i = 0; i < alphabets.length; i++) {
			alphabets[i] = (char)(alphabets[i]+32);
		}
		for(int i = 0; i < alphabets.length; i++) {
			System.out.println(alphabets[i] + "," + (int)alphabets[i]);
		}
	}

alphabets[i]에 (char)형으로 +32를 해주면 A의 아스키 값인 65에서 a의 아스키 값이95가 되므로 알파벳 소문자로 출력값이 나오게 된다.

문제 자체의 오류인지 내가 이해를 못하는 것인지 질문을 해두었으니 나중에 이해를 한 뒤 수정을 하도록 하겠다.

++답변을 받아보니 문제가 잘못된 것이 맞는 듯 하다. 소문자에서 대문자가 아니라 대문자에서 소문자로 변환하는 문제이다.

Q2.배열길이가 5인 정수형 배열은 선언하고 , 1~10중 짝수만 배열에 저장한 후 그 합을 출력하세요.

정수형으로 배열의 길이가 5인 배열 num을 선언하고 1~10중 짝수인 2,4,6,8,10을 넣어주었다.

총 합을 담아줄 total도 선언해주자.

그리고 배열 num의 길이만큼 더하기를 반복할 수 있도록 for문을 만들어주고, num의 배열들을 합하고 total넘기기를 반복하도록 total += num[i];를 써주었다.


public static void main(String[] args) {
		int[] num = new int[] {2,4,6,8,10};
		int total = 0;
		
		
			for(int i = 0; i<num.length; i++) {
				total += num[i];
			
		}
			System.out.println( "총 합은" + total + "입니다.");
	}
}

그럼 출력화면에 총 합은 30입니다.가 뜬다.

Q3.다음과 같이 Dog클래스가 있다. DogTest클래스와 배열길이가 5인 Dog[]배열을 만든 후 Dog인스턴스를 5개를 생성하여 배열에 추가한다. for문과 향상된 for문에서 Dog클래스의 showDogInfo()메서드를 사용하여 배열에 추가한 Dog정보를 모두 출력하시오.

public class Dog {
	private String name;
	private String type;
	
	public Dog(String name, String type) {
		this.name = name;
		this.type = type;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}
	public void showDogInfo() {
		System.out.println(name + "," + type);
	}
}

예제에는 안나온 showDogInfo()메서드를 추가해주고 DogTest클래스를 만들었다.


public class DogTest {

	public static void main(String[] args) {
		Dog[] shelter = new Dog[5];
		
		shelter[0] = new Dog ("치즈", "폼피츠");
		shelter[1] = new Dog ("뽀야", "시츄");
		shelter[2] = new Dog ("찐빵", "포메라니안");
		shelter[3] = new Dog ("라떼", "골든리트리버");
		shelter[4] = new Dog ("진돌이", "진돗개");
		
		System.out.println("=====for문=====");
		for(int i = 0; i < shelter.length; i++) {
			shelter[i].showDogInfo();
		}
		
		System.out.println("=====향상된 for문=====");
		for(Dog dog : shelter) {
			dog.showDogInfo();
		}
	}

}

동물 보호소라는 생각으로 배열이름은 shlter로 지었고, Name,type을 배열에 저장하였다.
for문과 향상된for문은을 구분 지어놓고, 출력하기 위해 showInfo()메서드를 사용했다.
for문과 향상된 for문은 showInfo()메서드의 양식이 서로 다르다.
for문은 배열이름[i].show클래스이름Info();
향상된 for문은 클래스이름.show클래스이름Info();
이다.

profile
html/css공부 중(JAVA잠시 접어두는 중)

0개의 댓글