명품자바프로그래밍 Chapter3_Lab02
실습2 | 다음 2차원 배열 n을 출력하는 프로그램 작성
public class Print2DArray {
public static void main(String[] args) {
int n[][] = {{1},{1,2,3},{1},{1,2,3,4},{1,2}}; //주어진 2차원 배열 선언
for (int i =0;i<n.length;i++) { // 배열의 행의 개수 만큼
for (int j=0;j<n[i].length;j++) {// 배열의 해당번째 행의 열의 개수 만큼
System.out.print(n[i][j] + " "); // 차례대로 출력
}
System.out.println(); // 한개의 행을 출력할 때 마다 띄어쓰기
}
}
}
실습4 | Scanner를 이용하여 소문자 알파벳을 하나 입력 받고 출력하기
import java.util.Scanner;
public class PrintAlphabet {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("소문자 알파벳 하나를 입력하시오 >> ");
String n = scanner.next(); //문자열 읽기
char c = n.charAt(0); //문자열의 첫 번째 문자 가져오기(Scanner는 문자를 입력받는 기능이 없다)
for (int i =0;i<=c-'a';i++) { //입력받은 문자의 해당 알파벳 숫자만큼 반복 (char c가 c면 3번/i=0,1,2/3개의 줄로 출력할것이다)
for (char s ='a'; s<=c-i; s++) { //문자자체의 출력, 처음에는 입력받은 알파벳까지 출력하고 i++되면 a부터 입력받은 알파벳-1번째까지 하나하나 출력
System.out.print(s);
}
System.out.println(); // 문자가 한줄씩 완석될 때 마다 띄어쓰기
}
scanner.close();
}
}
실습6 | 잔돈 치르기
import java.util.Scanner;
public class ChangeMoney {
public static void main(String[] args) {
int [] unit = {50000,10000,1000,500,100,50,10,1};//환산할 돈의 종류
Scanner scan = new Scanner(System.in);
System.out.print("금액을 입력하시오>> ");
int coin = scan.nextInt(); //정수 입력
for(int i=0;i<unit.length;i++) { //돈 종류만큼 반복(8번)
int money = coin / unit[i]; //money는 unit[i]으로 나눈 몫부분
coin %= unit[i] ; //coin에는 다음 반복문에 사용할 나머지 부분
if (money!=0)
System.out.println(unit[i]+"원 짜리 : "+money+"개");
}
scan.close();
}
}
실습8 | 정수를 입력받아 배열을 만든 후, 1~100까지의 정수를 랜덤으로 삽입!
import java.util.Scanner;
public class RandomArray {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in); //스캐너 객체 생성
System.out.print("정수 몇개? "); //사용자로부터 입력을 받기 위한 출력문
int n = scan.nextInt(); // 스캐너를 통한 입력값 저장
if (n>=100) { //입력받은 값의 유효성 체크(100보다 작은수 입력 받기)
System.out.print("100보다 작은 정수를 입력해주세요: ");
n = scan.nextInt();
}
int Array[] = new int[n]; //입력받은 값의 크기만큼 정수 배열 생성
for(int i = 1;i<=n;i++) { //배열의 크기만큼 반복 (3개면 3번 i=1,2,3)
int r = (int)(Math.random()*100 + 1); //난수 생성(1~100)
for(int j =0;j<i;j++) { // 배열에 정수 저장 (무조건 한번은 돌아갈 수 있도록 j=0 초기화 )
if (r == Array[j]) { //난수가 배열에 이미 있으면
i--; //다시 한번더 반복
break; //아래의 if문을 실행하지 않고 안쪽 for문 탈출
}
if (i-1 == j) {//값을 저장할 곳이 비어있으면 (해당번째에 저장해야할 인덱스를 찾는다. 2번째 큰 반복문이 돌 때 인덱스번호 1번자리에 정수 저장해야함)
Array[j] = r;
System.out.print(Array[j]+" "); //저장했으면 print
if (i%10==0) //정수를 10개단위로 끊어서 띄어쓰기
System.out.println();
}
}
}
scan.close(); //스캐너 종료
}
}
실습10 | 4x4의 2차원 배열을 만들고 1~10까지의 정수를 10개만 생성해 랜덤으로 삽입!
public class twoDArray {
public static void main(String[] args) {
int Array[][] = new int[4][4]; //4x4 2차원 배열 생성
for(int i =0;i<4;i++) {
for(int j=0;j<4;j++)
Array[i][j] = 0; //배열의 모든 원소를 0으로 초기화
}
for(int i =0;i<10;i++) { //반복문 돌면서 10개만 랜덤 정수 생성
int r = (int)(Math.random()*10 + 1); //(1~10)
int row = (int)(Math.random()*4); //행 인덱스 랜덤생성(0~3)
int col = (int)(Math.random()*4); //열 인덱스 랜덤생성 (0~3)
if(Array[row][col] != 0) {//배열의 원소가 0이 아니면 다시 한번 반복
i--;
}
if(Array[row][col] == 0) { //해당위치의 원소가 0이라면 랜덤 숫자 저장
Array[row][col] = r;
}
}
for(int i=0;i<4;i++) { //차원 배열 출력
for(int j =0;j<4;j++)
System.out.print(Array[i][j]+"\t");
System.out.println();
}
}
}
실습14 | 과목과 점수가 짝을 이루도록 출력
import java.util.Scanner;
public class ScoreArray {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String course[] = {"Java","C++","HTML5","컴퓨터구조","안드로이드"};
int score[] = {95,88,76,62,55};
while (true) { //break가 나올때 까지 무한루프
System.out.print("과목 이름>> ");
String name = scan.next(); //사용자가 입력한 과목명
if (name.equals("그만")) //그만을 입력했을 때 종료
break;
for(int i =0; i<5;i++) { //과목의 개수가 5개이므로 5번 반복
if(course[i].equals(name)) { //과목명이 course[i]의 문자열과 같은 경우
int n = score[i]; //책에 나온 힌트 코드라서 사용했지만 없어도 될듯
System.out.println(course[i]+"의 점수는 "+ n);
break; //아래의 if문을 실행 안하려면 찾았을 때 break로 탈출
}
if (i==4) //과목을 다 비교했는 데도 없을 경우(jaba)
System.out.println("없는 과목입니다.");
}
}
scan.close(); //스캐너 종료
}
}
실습16 | 컴퓨터와 가위바위보 게임
import java.util.Scanner;
public class GBBWithComputer {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str[] = {"가위","바위","보"}; //문자열 배열
System.out.println("컴퓨터과 가위 바위 보 게임을 합니다.");
while(true) {
System.out.print("가위 바위 보!>> ");
String user = scan.next();
int n = (int)(Math.random()*3); //0,1,2 중에서 컴퓨터가 랜덤하게 결정
if (user.equals("그만")) { //그만을 입력했을 경우 종료
System.out.println("게임을 종료합니다...");
break;
}
else if (user.equals(str[0])) { //사용자가 가위 입력
if(str[n].equals("가위")) //컴퓨터가 낸것이 가위인지 비교하는 코드
System.out.println("사용자 = "+str[0]+", 컴퓨터 = "+ str[n]+", 비겼습니다.");
else if(str[n].equals("바위")) //컴퓨터가 낸것이 바위인지 비교하는 코드
System.out.println("사용자 = "+str[0]+", 컴퓨터 = "+ str[n]+", 컴퓨터가 이겼습니다.");
else //컴퓨터가 보를 냈을 때
System.out.println("사용자 = "+str[0]+", 컴퓨터 = "+ str[n]+", 사용자가 이겼습니다.");
}
else if (user.equals(str[1])) { //사용자가 바위 입력
if(str[n].equals("가위")) //컴퓨터가 낸것이 가위인지 비교하는 코드
System.out.println("사용자 = "+str[1]+", 컴퓨터 = "+ str[n]+", 사용자가 이겼습니다.");
else if(str[n].equals("바위")) //컴퓨터가 낸것이 바위인지 비교하는 코드
System.out.println("사용자 = "+str[1]+", 컴퓨터 = "+ str[n]+", 비겼습니다.");
else //컴퓨터가 보를 냈을 때
System.out.println("사용자 = "+str[1]+", 컴퓨터 = "+ str[n]+", 컴퓨터가 이겼습니다.");
}
else { //사용자가 보 입력
if(str[n].equals("가위")) //컴퓨터가 낸것이 가위인지 비교하는 코드
System.out.println("사용자 = "+str[2]+", 컴퓨터 = "+ str[n]+", 컴퓨터가 이겼습니다.");
else if(str[n].equals("바위")) //컴퓨터가 낸것이 바위인지 비교하는 코드
System.out.println("사용자 = "+str[2]+", 컴퓨터 = "+ str[n]+", 사용자가 이겼습니다.");
else //컴퓨터가 보를 냈을 때
System.out.println("사용자 = "+str[2]+", 컴퓨터 = "+ str[n]+", 비겼습니다.");
}
}
scan.close(); //스캐너 종료
}
}
'Programming > JAVA' 카테고리의 다른 글
패키지 개념과 자바 기본 패키지 (0) | 2020.10.16 |
---|---|
상속 (0) | 2020.10.16 |
클래스와 객체 (0) | 2020.10.16 |
[Java] print, printf, println의 차이 (0) | 2020.09.03 |
자바의 기본 구조 (0) | 2020.09.02 |
댓글