연습문제 4일차
(오타인지 모르겠으나 이미 대문자인 것을 대문자로 변환하라 적혀 있어 임의로 소문자로 바꿔 풀었다.)
앞에서 배운 알파벳 출력예제를 대문자에서 소문자로 바꿔 프로그래밍해보는 문제이다.
앞에서 대문자 알파벳 출력문제를 먼저 살펴보자.
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]);
}
}
출력 값을 보면 다음과 같다.
++
정답을 보니 내가 잘못 이해한 문제인 것같다. 차근차근 다시 봐보자.
일단 임의로 고쳤던 문제를 다시 살펴보자.
배열의 요소값을 소문자에서 대문자로 변환해 보라고 하는데 이미 요소값은 대문자인데...
아마도 대문자에서 소문자로 변환해 보라는 것이 맞는 것 같고 위에서 먼저 풀이한 것처럼 단순히 '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가 되므로 알파벳 소문자로 출력값이 나오게 된다.
문제 자체의 오류인지 내가 이해를 못하는 것인지 질문을 해두었으니 나중에 이해를 한 뒤 수정을 하도록 하겠다.
++답변을 받아보니 문제가 잘못된 것이 맞는 듯 하다. 소문자에서 대문자가 아니라 대문자에서 소문자로 변환하는 문제이다.
정수형으로 배열의 길이가 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입니다.
가 뜬다.
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();
이다.