개발일기/팀스터디 및 프로젝트+면접 질응답 정리
4월 26일 수요일 :
민장미
2023. 4. 27. 19:26
연습문제: 아래 식으로 벡터를 출력해보기
//출력 - 향상된 for문으로 출력 ,그냥 for
//출력 예시 :
// String:"Test"
// Float : 10.45
// --> for문안에서
package collection;
import java.util.Vector;
//내일 오전까지
public class Exam_HW {
private Vector v;
public Exam_HW() {
v = new Vector();
v.add("Test");
v.add(10.45f);
v.add('A');
v.add(20.11);
v.add(true);
v.add(100l);
}
public void printVector() {
//출력 - 향상된 for문으로 출력 ,그냥 for
//출력 예시 :
// String:"Test"
// Float : 10.45
// --> for문안에서
}
}
다른 팀들은 자료형을 그냥 "String : " , "Float", 이런식으로 직접 타자로 쳐서 문자열로 작성했지만,
우리 조는 자료형 부분까지 타자를 치지 않고, 함수를 이용하여 시도 해보았다. 😁
우리 조꺼 ~ printVector를 보면 됌
package my;
// 내일 오전까지
import java.util.Vector;
public class Exam_HW {
private Vector v;
public Exam_HW() {
v = new Vector();
v.add("Test");
v.add(10.34f);
v.add('A');
v.add(20.22);
v.add(true);
v.add(100L);
}
// 클래스 이름을 가져오기 위해서 메소드를 만들었다.
public String showName(Object obj) {
return obj.getClass().getName();
}
public void printVector() {
//출력 - 향상된 for문으로 출력, 그냥 for
//출력 예시:
//String :"test"
// Float : 10.45
// --> for문안에서
int idx=0;
for(Object e : v) {
//System.out.println(" 자료형: "+e);
if(e instanceof String) { //showName 메소드를 사용하여서 자료형을 표기하는 응용을 해보았다.
System.out.println(showName(e).substring(10,showName(e).length()) +": "+v.get(idx));
}else if(e instanceof Float) {
System.out.println(e.getClass().getName().substring(10,15)+": "+v.get(idx));
}else if(e instanceof Character) {
System.out.println(e.getClass().getName().substring(10,14)+": "+v.get(idx));
}else if(e instanceof Double) {
System.out.println(e.getClass().getName().substring(10,16)+": "+v.get(idx));
}else if(e instanceof Boolean) {
System.out.println(e.getClass().getName().substring(10,17)+": "+v.get(idx));
}else if(e instanceof Long) {
System.out.println(e.getClass().getName().substring(10,14)+": "+v.get(idx));
}
idx++;
}//for
}
public static void main(String[] args) {
Exam_HW hw = new Exam_HW();
hw.printVector();
}//main
}
출력화면 :
그리고 오늘 오전에 쌤이 해설해주셨는데,
우리 조가 한거랑 거의 유사!!!
이게 우리가 작성한 방식.
메소드 하나 만들어서 코드 조금 줄임
ystem.out.println(showName(e).substring(10,showName(e).length()) +": "+v.get(idx));
System.out.println(e.getClass().getName().substring(10,15)+": "+v.get(idx));
1. 우리는 e.getClass().getName() 이걸 반환하는 메소드를 만들어서 코드를 조금 줄였었는데,
쌤은 getCanonicalName(); 이걸 쓰셨음.
2. 우리가 substring 함수를 틀리게 쓴 건 아니지만... 더 간결하게 사용할 수 있다니 ㅠㅠ 역시 많이 사용해봐야 겠다.
System.out.println(showName2(e).substring(10)+": "+v.get(idx));
+ getCanonicalName(); 을 적용한 새 메소드를 만들어서 코드를 더 줄였다!
아래가 최종본
package yesterday;
// 내일 오전까지
import java.util.Vector;
public class Exam_HW {
private Vector v;
public Exam_HW() {
v = new Vector();
v.add("Test");
v.add(10.34f);
v.add('A');
v.add(20.22);
v.add(true);
v.add(100L);
v.add('B');
v.add(65);
}
// 클래스 이름을 가져오기 위해서 메소드를 만들었다.
public String showName(Object obj) {
return obj.getClass().getName();
}
public String showName2(Object obj) {
return obj.getClass().getCanonicalName();
}
public void printVector() {
//출력 - 향상된 for문으로 출력, 그냥 for
//출력 예시:
//String :"test"
// Float : 10.45
// --> for문안에서
// String obj = e.getClass().getCanonicalName();
// System.out.println(obj.substring(10)+":"+e);
int idx=0;
for(Object e : v) {
//System.out.println(" 자료형: "+e);
if(e instanceof String) { //showName 메소드를 사용하여서 자료형을 표기하는 응용을 해보았다.
System.out.println(showName(e).substring(10,showName(e).length()) +": "+v.get(idx));
}else if(e instanceof Float) {
System.out.println(showName2(e).substring(10)+": "+v.get(idx)); //최종
}else if(e instanceof Character) {
System.out.println(e.getClass().getName().substring(10,14)+": "+v.get(idx));
}else if(e instanceof Double) {
System.out.println(e.getClass().getName().substring(10,16)+": "+v.get(idx));
}else if(e instanceof Boolean) {
System.out.println(e.getClass().getName().substring(10,17)+": "+v.get(idx));
}else if(e instanceof Long) {
System.out.println(e.getClass().getName().substring(10,14)+": "+v.get(idx));
}
idx++;
}//for
//test
String t = "안녕하세요";
String s = t.getClass().getCanonicalName().substring(10);
System.out.println(s);
}
public static void main(String[] args) {
Exam_HW hw = new Exam_HW();
hw.printVector();
}//main
}