728x90
반응형

문제1

	public static void main(String[] args) {
		String str1 = "자바";
		String str2 = new String("자바");
		if(str1=str2){ // 문자열 비교
		    // 문자열이 같다면 출력
			System.out.println(str1+"과 "+str2+"는 같은 문자열입니다.");
		}
	}
  • 다음 main() 메소드의 if문이 실행되도록 수정하시오.

 

 

▶ 고칠 점

== 연산자는 비교하고자 하는 대상의 주소 값을 비교하기 때문에 두 문자열이 같지 않다고 나온다.

equals 메소드는 비교하고자 하는 두 대상의 값 자체를 비교하기 때문에 문자열의 값을 비교할 수 있다.

 

▶ 수정한 코드

문자열은 equals()로 내용을 비교해야 한다

	public static void main(String[] args) {
		String str1 = "자바";
		String str2 = new String("자바");
		if(str1.equals(str2)){ // 문자열 비교
		    // 문자열이 같다면 출력
			System.out.println(str1+"과 "+str2+"는 같은 문자열입니다.");
		}
	}

 

▶ 출력 결과

자바과 자바는 같은 문자열입니다.

 

 

 

 

문제2

  • 5단을 제외한 2단부터 9단까지의 구구단을 출력하시오.
		for(int i=2;i<=9;i++){	//2단부터 출력
			if(i==5) //5단 출력 X
				continue;
			
			System.out.println("<"+i+"단>");
			for (int j=1; j<=9; j++) 
				System.out.println(i+"*"+j+"="+i*j);

			System.out.println(); //줄바꿈
		}//i_outer_for

 

 

 

 

문제3

  • [3, 5, 2, 9, 8] 배열의 0 번째 인덱스 값과 최댓값의 위치를 변경하시오.

 

▶ 코드

		int arr[] = {3, 5, 2, 9, 8};
		
		//최댓값의 인덱스 찾기
		int maxIndex=0;
		for(int i=1;i<arr.length;i++)
			if(arr[maxIndex]<arr[i])
				maxIndex=i;
		
		//0번째 인덱스 값과 최댓값의 위치 변경
		if(maxIndex!=0){ //maxIndex의 값이 처음과 같이 0이라면 위치를 변경할 필요없음
			int temp = arr[maxIndex];
			arr[maxIndex] = arr[0];
			arr[0] = temp;
		}
		
		System.out.println("결과 : "+Arrays.toString(arr));

 

▶ 출력 결과

결과 : [9, 5, 2, 3, 8]

 

 

 

 

문제4

  • 랜덤 구구단 문제를 5번 반복하시오.
  • 맞으면 정답, 틀리면 오답.

 

▶ 코드

		Random rand = new Random();
		Scanner scan = new Scanner(System.in);
		
		for(int i=0;i<5;i++){ //구구단 5번 반복
			int num1 = rand.nextInt(8)+2; //2단~9단
			int num2 = rand.nextInt(9)+1; //1~9
			int gugudan = num1*num2;
			System.out.print((i+1)+"번 문제 : "+num1+"*"+num2+"=");
			
			int check = scan.nextInt();
			if(check==gugudan)
				System.out.println("정답입니다.");
			else
				System.out.println("오답입니다.");
		}
		
		scan.close(); //OS flthtm 낭비 방지

 

▶ 출력 결과

1번 문제 : 4*5=5
오답입니다.
2번 문제 : 3*4=12
정답입니다.
3번 문제 : 3*2=6
정답입니다.
4번 문제 : 7*1=8
오답입니다.
5번 문제 : 2*1=2
정답입니다.

 

 

 

 

문제5

  • ArrayList에 값을 넣고, 점수들의 총합을 출력하시오.

 

▶ 코드

public class TestNum05 {

	static int setValue(Scanner scan, String str){
		System.out.print(str+" 점수를 입력하세요 >> ");
		int num;
		while(true){
			num = scan.nextInt();
			if(str.equals("자바")){
				if(num<0 || num>30)
					System.out.print("0부터 30 사이의 값을 입력하세요 >> ");
				else
					break;
			} else if(str.equals("오라클")){
				if(num<0 || num>50)
					System.out.print("0부터 50 사이의 값을 입력하세요 >> ");
				else
					break;
			} else if(str.equals("html")){
				if(num<0 || num>20)
					System.out.print("0부터 20 사이의 값을 입력하세요 >> ");
				else
					break;
			}
		}//while_end

		return num;
	}

	public static void main(String[] args) {
		ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();

		while(true){
			Scanner scan = new Scanner(System.in);
			System.out.print("1.입력, 2.삭제, 3.출력 (그 외의 값은 종료) : ");
			int num = scan.nextInt();

			if(num==1){
				//입력 부분
				HashMap<String, Object> map = new HashMap<String, Object>();

				System.out.print("이름을 입력하세요 >> ");
				map.put("name",scan.next());
				map.put("java",setValue(scan,"자바"));
				map.put("oracle",setValue(scan,"오라클"));
				map.put("html",setValue(scan,"html"));

				list.add(map);

			} else if(num==2){
				//삭제 부분
				System.out.print("삭제할 이름 >> ");
				String s = scan.next();
				
				for(int i=0;i<list.size();i++){
					if(s.equals(list.get(i).get("name"))){
						list.remove(i);
						break;
					} else
						System.out.println("해당 정보와 일치하는 사람이 없어 삭제되지 않았습니다.");
				}


			} else if(num==3){
				//출력 부분
				for(int i=0;i<list.size();i++){
					System.out.print("이름:"+list.get(i).get("name"));
					int num1 = (int)list.get(i).get("java");
					int num2 = (int)list.get(i).get("oracle");
					int num3 = (int)list.get(i).get("html");
					
					System.out.println(", 총점:"+(num1+num2+num3));
				}
			} else{
				//종료 부분
				System.out.println("프로그램을 종료합니다.");
				break;
			}
			System.out.println(); //줄바꿈
		}//while_end
	}//main_end

 

▶ 출력 결과

1.입력, 2.삭제, 3.출력 (그 외의 값은 종료) : 1
이름을 입력하세요 >> 홍길동
자바 점수를 입력하세요 >> 50
0부터 30 사이의 값을 입력하세요 >> 30
오라클 점수를 입력하세요 >> 30
html 점수를 입력하세요 >> 30
0부터 20 사이의 값을 입력하세요 >> 20

1.입력, 2.삭제, 3.출력 (그 외의 값은 종료) : 3
이름:홍길동, 총점:80

1.입력, 2.삭제, 3.출력 (그 외의 값은 종료) : 5
프로그램을 종료합니다.

 

728x90
반응형

+ Recent posts