프로그래밍/Java 공부

이차원 배열, 성적 입력 프로그램, 모스부호 해독

개발계발게발 2021. 5. 27. 18:21
반응형

이차원 배열 출력 예제

import java.util.Arrays;

public class MultiArray02 {
	public static void main(String[] args) {
		
		int[][] multiArr01 = new int[2][4];

		int val=1;
		for (int i = 0; i < multiArr01.length; i++) {	//for 문 사용 출력 1234
			for (int j = 0; j < multiArr01[i].length; j++) {
				System.out.print(multiArr01[i][j]=val++);
				}			
			System.out.println("");
		}
		
		System.out.println("=========================");
		
		System.out.println(Arrays.toString(multiArr01));	// 주소값 출력됨 [[I@53bd815b, [I@2401f4c3]		
		
		for (int i = 0; i < multiArr01.length; i++) {	// for문 사용 출력 [1, 2, 3, 4] [5, 6, 7, 8]...

			System.out.println(Arrays.toString(multiArr01[i]));			
		}
		
		for (int[] is : multiArr01) {	//for each문 사용	[0, 0, 0, 0]...
			System.out.println(Arrays.toString(is));				
		}
		
		for (int[] is : multiArr01) {	//for each문 사용 0 0 0 0...
			for (int i : is) {
				System.out.println(i);			
			}			
		}			
	}
}

 

이차원 배열 사용 성적 입출력 프로그램

 

import java.util.Scanner;


//	성적 입력 및 출력하는 프로그램
//	학생 이름, java, jsp, spring
//	학생 이름, java점수, jsp점수, spring점수, 총점, 평균, 등급
//	2차원 배열, 스위치, for, if
public class MultiArray03 {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		System.out.print("학생 수를 입력하세요 : ");
		int input = sc.nextInt();
		String[] subject = { "java", "jsp", "spring" };	//과목 
		int[][] student = new int[input][subject.length+1];
		String[] name = new String[input];	//이름
		double[] avg = new double[input];	//평균
		char[] grade = new char[input];		//학점

		for (int i = 0; i < input; i++) {
			System.out.print("이름을 입력하세요 : ");
			name[i] = sc.next();
			for (int j = 0; j < subject.length; j++) {
				do {
					System.out.println(subject[j] + " 점수를 입력하세요.");
					student[i][j] = sc.nextInt();
				} while (student[i][j] > 100 || student[i][j] < 0);
				student[i][student[i].length - 1] += student[i][j];
			}
			avg[i] = student[i][student[i].length - 1] / (double) subject.length;

			switch ((int) (avg[i] / 10)) {
			case 10:
			case 9:
				grade[i] = 'A';
				break;
			case 8:
				grade[i] = 'B';
				break;
			case 7:
				grade[i] = 'C';
				break;
			case 6:
				grade[i] = 'D';
				break;
			default:
				grade[i] = 'F';
				break;
			}
		}
		System.out.println("이름\t 자바\t jsp\t spring\t 총점\t 평균\t 등급");
		for (int i = 0; i < student.length; i++) {
			System.out.print(name[i] + "\t ");
			for (int j = 0; j < student[i].length - 1; j++) {
				System.out.print(student[i][j] + "\t ");
			}
			System.out.print(student[i][student[i].length - 1]+"\t ");
			System.out.printf("%.2f\t ", avg[i]);
			System.out.println(grade[i]);
		}
		System.out.println("┏━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━┓");
		System.out.println("┃ 이  름 ┃ 자바 ┃ jsp ┃ spring ┃ 총점 ┃ 평균  ┃ 등급┃");
		System.out.println("┣━━━━━━━━╋━━━━━━╋━━━━━╋━━━━━━━━╋━━━━━━╋━━━━━━━╋━━━━━┫");
		for (int i = 0; i < student.length; i++) {
			System.out.printf("┃ %3.3s ┃ %4d ┃ %3d ┃ %6d ┃ %4d ┃ %.2f ┃ %3s ┃\n" 
					, name[i], student[i][0] 
					, student[i][1], student[i][2] 
					, student[i][3], avg[i], grade[i]
									);
		}
		System.out.println("┗━━━━━━━━┻━━━━━━┻━━━━━┻━━━━━━━━┻━━━━━━┻━━━━━━━┻━━━━━┛");
		
		
		//%S = 모두 대문자처리
		//%5s = 3.3 = 3칸 할당 3개만 표시
		//%d = 4 = 4칸 할당 찎음 60이면 __60
		//%f = .2 = 소수점 아래 두자리
		//35
	}
}

 

이차원 배열 난수(랜던값) 입력

 

import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;

class MultiArray04 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("행 : ");
		int input = sc.nextInt();
		System.out.print("열 : ");
		int input2 = sc.nextInt();
		
		int[][] mArray = new int[input][input2]; 	// 행열 배열
		int[] N = new int[mArray.length * mArray[0].length]; 	// 행열 인덱스 개수 만큼 배열 생성
		for (int i = 0; i < N.length; i++) {	// 중복값 제거한 난수 생성
			int ran = (int) (Math.random() * mArray.length * mArray[1].length + 1);
			N[i] = ran;
			for (int j = 0; j < i; j++) {	// 중복값 제거
				if (N[i] == N[j]) {
					i--;
					break;
				}
			}
		}

		System.out.println(Arrays.toString(N));	//확인 출력

		int val = 0;
		for (int i = 0; i < mArray.length; i++) {	//난수 생성값 배열에 저장
			for (int j = 0; j < mArray[i].length; j++) {
				mArray[i][j] = N[val++];
			}
		}

		for (int i = 0; i < mArray.length; i++) {	//출력
			System.out.println(Arrays.toString(mArray[i]));
		}
		System.out.println("-----------------------------------");
		for (int[] is : mArray) {	//출력
			System.out.println(Arrays.toString(is));			
		}
		
		//===========================================================
		
		
		Set<Integer> linked = new LinkedHashSet<Integer>();
		
		System.out.println("LinkedHashSet 사용");
		Random random = new Random();		
		while(linked.size() < mArray.length * mArray[0].length) {	//행열 길이 만큼 LinkedHashSet 인덱스 생성
			//linked.add((int)(Math.random() * mArray.length * mArray[1].length +1));
			linked.add(random.nextInt(mArray.length * mArray[1].length)+1);
		}		
		System.out.println(linked);		// 확인 출력
		Iterator<Integer> iter = linked.iterator();	// Iterator 반복자에 담기
		for (int i = 0; i < mArray.length; i++) {
			for (int j = 0; j < mArray[i].length; j++) {
				mArray[i][j] = (int) iter.next();	// 행열에 하나씩 담기
			}
		}		
		for (int i = 0; i < mArray.length; i++) {	// 출력
			System.out.println(Arrays.toString(mArray[i]));
		}
		sc.close();
	}
}

import java.util.Arrays;

public class MultiArray05 {
	public static void main(String[] args) {
		
		int[][] three = new int [3][3];
		
		for (int i = 0; i < 10; i++) {
			int r1 = (int) (Math.random() * 3);
			int r2 = (int) (Math.random() * 3);
			if(three[r1][r2]== 0) {
				three[r1][r2] = i;
				three[r1][r2] = i;
			}
			else {
				i--;
				System.out.println(r1 + ":" + r2 + " 중복");
			}
		}
		for (int[] is : three) {
			System.out.println(Arrays.toString(is));
			
		}
	}
}

 

모스부호 해독

 

문자열 형식으로 입력 받은 모스코드(dot: . dash:-)를 해독하여 영어 문장으로 출력하는 프로그램을 작성하시오.

글자와 글자 사이는 공백 하나, 단어와 단어 사이는 공백 두개로 구분한다.

예를 들어 다음 모스부호는 "he sleeps early"로 해석해야 한다.

.... . ... .-.. . . .--. ... . .- .-. .-.. -.--

모스부호 규칙 표

문자부호문자부호

A .- N -.
B -... O ---
C -.-. P .--.
D -.. Q --.-
E . R .-.
F ..-. S ...
G --. T -
H .... U ..-
I .. V ...-
J .--- W .--
K -.- X -..-
L .-.. Y -.--
M -- Z --..

 

import java.util.Scanner;

public class Morse {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

//		char[] alpha = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',	// 모스부호로 변환시 문제
//                'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
		String[] alpha = {"a","b","c","d","e","f","g","h","i","j",
                "k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
		String[] morse = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--",
				"-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", " " };
		System.out.print("모스부호를 입력하세요 : ");
		String str = sc.nextLine();
		String[] strArr = str.split("  ");	//단어와 단어 분리
		strArr= str.split(" ");	// 단어 분리
		System.out.print("모스부호 해독 : ");
		for (int i = 0; i < strArr.length; i++) {
			for (int j = 0; j < morse.length; j++) {
				if (strArr[i].equals(morse[j])) {
					System.out.print(alpha[j]);
				}
			}
			if(strArr[i].isEmpty()){ //단어 공백 체크
			System.out.print("_");
			}			
		}
//		System.out.println("\n문장을 입력하세요 : ");
//		String input = sc.nextLine();
//		String[] inputArr = input.split(" ");	// 단어 분리
//
//		for (int i = 0; i < inputArr.length; i++) {
//			for (int j = 0; j < alpha.length; j++) {
//				if (inputArr[i].equals(alpha[j])) {
//					System.out.print(morse[j]);
//				}
//			}
//			if(inputArr[i].isEmpty()){ //단어 공백 체크
//			System.out.print("  ");
//			}			
//		}		
		sc.close();
	}
}

 

반응형