반응형
이차원 배열 출력 예제
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();
}
}
반응형
'프로그래밍 > Java 공부' 카테고리의 다른 글
객체지향, 객체 , 인스턴스 (0) | 2021.06.01 |
---|---|
데이터 포맷, 텍스트 포맷, 동적가변배열, 배열 복사 (0) | 2021.05.31 |
배열, 이차원 배열 (0) | 2021.05.26 |
배열, foreach문 (0) | 2021.05.25 |
for문(별찍기), switch문, while문, do~while문 (0) | 2021.05.24 |