Test43 1차원 배열 문제
package day04;
import java.util.Scanner;
public class Test43 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// * 1차원 배열 문제 *
// 문제1-1. arr이라는 이름의 방5개 짜리 배열에 사용자로부터 5개의 정수를 입력받아, 출력
int arr [] = new int[5]; // 방의 크기 5개 선언
System.out.println("정수 5개 입력하세요 ");
for( int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(sc.nextLine());
}
for( int j = 0; j < arr.length; j++) {
System.out.println(arr[j]);
}
System.out.println("====================================");
/////////////////////////////////////////////////////////////////////////////////
// 문제1-2. 위에서 만든 배열 arr에 저장된 값들을 오름차순으로 정렬해보세요.
for(int i = 0; i < arr.length-1; i++) {
for(int j = i; j < arr.length; j++) {
if(arr[i] > arr[j]) { // myArr[i] > myArr[j] ==> 오름차순
int temp = arr[i]; // 임시 변수로 치환
arr[i] = arr[j]; // i값을 j로 대입
arr[j] = temp; // j값에 tem값(치환되기전 i값) 대입
}
}
}
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i] + " ");
}
System.out.println("====================================");
/////////////////////////////////////////////////////////////////////////////////
// 문제1-3. 정수 한개를 더 입력받아 저장해보세요.
// 입력받은 정수는 기존배열의 마지막 데이터 다음 방에 저장되어야한다.
// 단, 배열은 문법적으로 방크기 조절불가...
// (결국 arr의 방크기는 6이 되어야 함)
int[] tmp = arr; // 배열 원본 잠시 주소 복사
//System.out.println(tmp); // tmp 주소 확인
arr = new int[6]; // arr에 새로운방 6개 만들어서 주소담기
//System.out.println(arr); // 새로운 arr 주소 확인
int len = arr.length;
for(int i = 0; i < tmp.length; i++) { // 방 6개로 새로 만든 방의 갯수 담아두기
arr[i] = tmp[i];
}
System.out.println("정수를 1개 추가 입력하세요 ");
int num = Integer.parseInt(sc.nextLine());
arr[len-1] = num; // 총 길이가 6, [5]에 추가 입력해야하므로 [len-1]
for(int i = 0; i < arr.length; i++) { // for(int a : arr){ }
System.out.println(arr[i] + " ");
}
System.out.println("====================================");
/////////////////////////////////////////////////////////////////////////////////
// 문제2-1. 게임 랭킹 보드. 5개의 데이터를 저장할 수 있는 users와 scores라는 배열이 있고,
// users배열에는 유저네임, scores 배열에는 유저의 게임점수를 각각 입력받는다.
// 단, 유저네임과 게임점수는 배열 인덱스상으로 서로 일치해야한다.
String users [] = new String[5];
int scores [] = new int[5];
for( int i =0; i < 5; i++) {
System.out.println("유저네임을 입력하세요 ");
users[i] = sc.nextLine();
System.out.println("점수를 입력하세요 ");
scores[i] = Integer.parseInt(sc.nextLine());
}
for( int j =0; j < 5; j++) {
System.out.println(users[j]);
System.out.println(scores[j]);
}
System.out.println("====================================");
// 문제2-2. 위 저장된 users와 scores를 아래와 같은 형태로 출력해보세요.
/* 출력예)
user_name score
----------------------
피카츄 87
파이리 24
....
*/
System.out.println("user_name" + "\t" + "score");
System.out.println("-------------------------");
for( int j =0; j < 5; j++) {
System.out.print(" " + users[j] + "\t");
System.out.println(scores[j]);
}
// 문제2-3. 두번째 유저의 점수와 세번째 유저의 점수가 바뀌어 저장되었다 하네요.
// 교환해서 저장해주세요.
int temp = scores[1];
scores[1] = scores[2];
scores[2] = temp;
for(int i = 0; i < scores.length; i++) {
System.out.println(scores[i] + " ");
}
System.out.println("====================================");
// 문제2-4. 점수가 높은순으로 게임 랭킹보드를 만들고, 출력해주세요. (1~5위)
/* 출력예)
rank user_name score
---------------------------------
1 꼬북이 97
2 피카츄 87
3...
*/
System.out.println("rank" + "\t" + "user_name" + "\t" + "score");
System.out.println("-------------------------------");
for(int i = 0; i < scores.length-1; i++) {
for(int j = i; j < scores.length; j++) {
if(scores[i] < scores[j]) { //myArr[i] > myArr[j] ==> 오름차순
int tem1 = scores[i];
String tem2 = users[i]; // 임시 변수로 치환
scores[i] = scores[j]; // i값을 j로 대입
users[i] = users[j];
scores[j] = tem1; // j값에 tem값(치환되기전 i값) 대입
users[j] = tem2;
}
}
}
for( int k = 0; k < 5; k++) {
System.out.print(" " + (k + 1)+ "\t");
System.out.print(" " + users[k] + "\t");
System.out.println(" " +scores[k]);
}
// 문제2-5. 또 한명의 유저가 게임을 끝냈습니다.
// 점수와 유저네임을 입력받고, 기존의 게임 랭킹보드를 업데이트 해주세요.
// 이때 입력받은 새로운 유저의 데이터는 기존데이터에 추가.(1-3문제참고)
// 저장 후, 랭킹을 출력하시되 1~5위까지만 출력해주세요.
// 배열 방 크게 만들기
int Len = scores.length; // 기존 방크기 담아놓기 : 5
int [] scoTmp = scores; // 임시 배열에 복사
String[] usrTmp = users;
scores = new int[Len + 1]; // 기존크기보다 1개방 더 크게 새로 만들기
users = new String[Len + 1];
// 다시 큰방에 옮겨 담기
for(int i = 0; i < Len; i++) {
scores[i] = scoTmp[i];
users[i] = usrTmp[i];
}
// 새이름과 점수 입력받아 마지막 방에 저장
System.out.println("새로운 이름을 입력하세요");
users[Len] = sc.nextLine();
System.out.println("점수를 입력하세요");
scores[Len] = Integer.parseInt(sc.nextLine());
// 정렬 다시
for(int i = 0; i < scores.length-1; i++) {
for(int j = i + 1; j < scores.length; j++) {
if(scores[i] < scores[j]) {
int tmp1 = scores[i];
scores[i] = scores[j];
scores[j] = tmp1;
String stmp = users[i];
users[i] = users[j];
users[j] = stmp;
}
}
}
// 순위 출력
System.out.println("rank" + "\t" + "user_name" + "\t" + "score");
System.out.println("-------------------------------");
for( int i = 0; i < 5; i++) {
System.out.print(" " + (i + 1)+ "\t");
System.out.print(" " + users[i] + "\t");
System.out.println(" " +scores[i]);
}
sc.close();
}
}
Author And Source
이 문제에 관하여(Test43 1차원 배열 문제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jonny77/Test43-1차원-배열-문제저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)