반응형
1. 프로그램으로부터 난수값을 제공받아 출력하는 프로그램
basic > MathRandomApp.java
- 실행 시마다 난수는 변경될 것임!
package basic;
//Math클래스 : 수학 관련 기능을 제공하는 클래스
//=> 사인 , 코사인 , 탄젠트 , 반올림 , 올림 , 내림 , 절대값 , 원주율 ... 기능(메소드) 제공
//=> ex. 피타고라스의 정리 - 프로그램으로 아날로그시계만들때 사용
//=> 자바는 직접 만들어 쓰지 않고 다양한 클래스로 제공해줌, 가져다 쓰면 돼!
//Math.random() : 0.0 보다 크거나 같고 1.0 보다 작은 실수 난수값을 반환하는 메소드
//=> 0.0 <= Math.random() < 1.0
//=> 난수값이란? 불규칙적으로 발생되는 숫자값
public class MathRandomApp {
public static void main(String[] args) {
//실수 난수값을 출력하는 프로그램 ( 0.0 <= X < 1.0 )
for(int i=1;i<=5;i++) {
System.out.println(i+"번째 실수 난수값 = "+Math.random());
}
//1번째 난수값 = 0.6471147712413331
//2번째 난수값 = 0.6628401440753547
//3번째 난수값 = 0.678236126197151
//4번째 난수값 = 0.25420125446990094
//5번째 난수값 = 0.3931099005482527
System.out.println("===============================================================");
//정수 난수값을 출력하는 프로그램 - 정수 출력이 가장 많이 사용
//=> 0 ~ 99 랜덤 출력
for(int i=1;i<=5;i++) {
//(int)(Math.random()*100) : 0 <= 난수값 < 100 : 0~99
System.out.println(i+"번째 정수 난수값 = "+(int)(Math.random()*100));
}
//1번째 정수 난수값 = 45
//2번째 정수 난수값 = 55
//3번째 정수 난수값 = 5
//4번째 정수 난수값 = 24
//5번째 정수 난수값 = 51
System.out.println("===============================================================");
//=> 1 ~ 45 랜덤 출력
for(int i=1;i<=5;i++) {
//(int)(Math.random()*45)+1 : (0+1) <= 난수값 < (45+1) : (0+1)~(44+1) : 1~45
//=> + 문자열결합연산자가될 수 있으니 ()로 묶어주기
System.out.println(i+"번째 정수 난수값 = "+((int)(Math.random()*45)+1));
}
System.out.println("===============================================================");
}
}
2. 가위바위보 게임 프로그램
basic > RpaGameApp.java
package basic;
import java.util.Scanner;
// => 컴퓨터(난수값)와 사용자(키보드 입력값)의 가위바위보 대결
// => 사용자가 이길 경우 대결을 반복 실행하며 질 경우 대결 종료
// => 대결 종료 후 사용자의 승리 횟수 출력
public class RpaGameApp {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
//사용자의 승리 횟수를 저장하기 위한 변수
int count=0;
//가위바위보 대결 - 반복 처리
while(true) {
//컴퓨터에게 가위바위보 중 하나를 제공받아 저장
// => 1 : 가위, 2 : 바위, 3 : 보
// => 1~3 범위의 정수값을 난수로 제공받아 저장
int computer=(int)(Math.random()*3)+1;
//사용자에게 가위바위보 중 하나를 키보드로 입력받아 저장
// => 입력값이 1~3 범위의 정수값이 아닌 경우 에러메세지 출력 후 재입력
int user;
while(true) {//입력값 검증을 위한 반복문
System.out.print("가위바위보[1:가위,2:바위,3:보] >> ");
user=scanner.nextInt();
if(user>=1 && user<=3) break;//정상적인 값이 입력된 경우 반복문 종료
//비정상적이 값이 입력된 경우 에러메세지 출력 후 반복문 실행
System.out.println("[에러]가위, 바위, 보 중 하나를 선택하여 입력해 주세요.");
}
//컴퓨터와 사용자의 가위바위보 출력
System.out.print("[입력]컴퓨터 >> ");
switch (computer) {
case 1: System.out.print("가위"); break;
case 2: System.out.print("바위"); break;
case 3: System.out.print("보"); break;
}
System.out.print(", 사용자 >> ");
switch (user) {
case 1: System.out.print("가위"); break;
case 2: System.out.print("바위"); break;
case 3: System.out.print("보"); break;
}
System.out.println();
//컴퓨터와 사용자의 가위바위보 대결의 승패를 판단하여 출력
// => 사용자가 이긴 경우 승리횟수를 1 증가하여 저장하고 대결 반복
// => 사용자가 진 경우 대결 종료 - 반복문 종료
if(computer==user) {
System.out.println("[결과]컴퓨터와 사용자가 서로 비겼습니다.");
} else if(computer==1 && user==2 || computer==2 && user==3 || computer==3 && user==1) {
System.out.println("[결과]사용자가 컴퓨터에게 이겼습니다.");
count++;//승리횟수 1 증가 >> 대결 반복
} else {
System.out.println("[결과]사용자가 컴퓨터에게 졌습니다.");
break;//반복문 종료 - 대결 종료
}
System.out.println();
}
//승리횟수 출력
System.out.println("===============================================================");
if (count==0) {
System.out.println("[메세지]사용자가 컴퓨터에게 한번도 이기지 못했습니다.");
} else {
System.out.println("[메세지]사용자가 컴퓨터에게 "+count+"번을 연속적으로 이겼습니다.");
}
scanner.close();
}
}
3. 컴퓨터로부터 제공받은 정수 난수값을 키보드로 입력하여 맞추는 프로그램
Example > UpAndDownExample.java
package example;
import java.util.Scanner;
//컴퓨터로부터 제공받은 정수 난수값을 키보드로 입력하여 맞추는 프로그램을 작성하세요.
// => 1~100 범위의 정수 난수값을 제공받도록 작성
// => 난수값을 맞출 수 있는 기회는 10번만 제공되도록 작성
// => 키보드 입력값이 1~100 범위가 아닌 경우 메세지 출력 후 재입력
// => 난수값과 입력값이 같은 경우 입력 횟수 출력 후 프로그램 종료
// => 난수값과 입력값이 다른 경우 "큰값 입력" 또는 "작은값 입력" 형식의 메세지 출력
// => 난수값을 10번 안에 맞추지 못한 경우 난수값이 출력되도록 작성
public class UpAndDownExample {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
//1~100 범위의 정수난수를 제공받아 변수에 저장
int dap=(int)(Math.random()*100)+1;
//정답 상태를 저장하기 위한 변수
// => false : 정답을 맞추지 못한 상태, true : 정답을 맞춘 상태
boolean result=false;
//10번의 기회를 제공하기 위한 반복문
// => 키보드로 정수값을 입력받아 난수값과 비교하여 결과 출력
for(int i=1;i<=10;i++) {
//키보드로 1~100 범위의 정수값을 입력받아 저장
// => 비정상적인 값이 입력된 경우 재입력 처리
int input;
while(true) {//키보드 입력값을 검증하는 반복문
System.out.print(i+"번째 정수값 입력[1~100] >> ");
input=scanner.nextInt();
if(input>=1 && input<=100) break;
System.out.println("[에러]1~100 범위의 정수값만 입력해 주세요.");
}
//난수값과 입력값을 비교하여 결과 출력
if(dap==input) {//난수값과 입력값이 같은 경우
System.out.println("[메세지]축하합니다."+i+"번만에 맞췄습니다.");
result=true;
break;//반복문 종료 >> 프로그램 종료
} else if(dap>input) {//난수값이 입력값보다 큰 경우
System.out.println("[결과]"+input+"보다 큰 값을 입력해 보세요.");
} else {//난수값이 입력값보다 작은 경우
System.out.println("[결과]"+input+"보다 작은 값을 입력해 보세요.");
}
}
if(!result) {//정답을 맞추지 못한 경우
System.out.println("[메세지]정답을 맞추지 못했군요. 정답은 ["+dap+"]입니다.");
}
scanner.close();
}
}
//1번째 정수값 입력[1~100] >> 123
//[에러]1~100 범위의 정수값만 입력해 주세요.
//1번째 정수값 입력[1~100] >> 1
//[결과]1보다 큰 값을 입력해 보세요.
//2번째 정수값 입력[1~100] >> 32
//[결과]32보다 작은 값을 입력해 보세요.
//3번째 정수값 입력[1~100] >> 24
//[결과]24보다 작은 값을 입력해 보세요.
//4번째 정수값 입력[1~100] >> 234
//[에러]1~100 범위의 정수값만 입력해 주세요.
//4번째 정수값 입력[1~100] >> 2
//[결과]2보다 큰 값을 입력해 보세요.
//5번째 정수값 입력[1~100] >> 334
//[에러]1~100 범위의 정수값만 입력해 주세요.
//5번째 정수값 입력[1~100] >> 11
//[결과]11보다 큰 값을 입력해 보세요.
//6번째 정수값 입력[1~100] >> 1
//[결과]1보다 큰 값을 입력해 보세요.
//7번째 정수값 입력[1~100] >> 3
//[결과]3보다 큰 값을 입력해 보세요.
//8번째 정수값 입력[1~100] >> 4
//[결과]4보다 큰 값을 입력해 보세요.
//9번째 정수값 입력[1~100] >> 35
//[결과]35보다 작은 값을 입력해 보세요.
//10번째 정수값 입력[1~100] >> 11
//[결과]11보다 큰 값을 입력해 보세요.
//[메세지]정답을 맞추지 못했군요. 정답은 [13]입니다.
4. 사용자에게 키보드로 이름과 나이를 입력받아 출력하는 프로그램
basic > ScannerApp.java
package basic;
//System클래스의 out 객체:
//=>출력스트림을 사용하여 값을 화면에 출력하는 기능을 제공하는 객체
//=>자바가 제공해주는 기본 출력스트림
//System클래스의 in 객체:
//=>키보드로부터 전달된 값을 입력스트림을 사용하여 입력하는 기능(=메소드)을 제공하는 객체
//=>자바가 제공해주는 기본 입력스트림
//=>System.in.read() -> 문자 하나만 입력받음 - 비효율적..
//=>확장시켜서 사용해야함 그러려면 객체를 많이 알고 있어야함 , 예외처리도 해주어야함
//=>초보자는 System.in을 좀 더 확장해서 쓸 수 있도록 일단 scanner클래스를 사용하자
//=>사용자로부터 값을 입력받아 변수에 저장할 수 있음
//canner.nextLine() 메소드 & Scanner.nextInt() 메소드
//console창 💻모양
//=>console창에 Display Selected Console 버튼(모니터모양) 확인하여
//=>실행이 몇개되고있는지 보기! (많을수록 메모리 차지를 많이 하여 실행 속도가 느려짐)
import java.util.Scanner;
//Scanner 클래스 : 입력장치(키보드, 파일 등)로부터 전달된 값을 반환하기 위한 기능을 제공하는 클래스
//System.out : 출력스트림을 사용하여 값을 화면에 출력하는 기능을 제공하는 객체
//System.in : "키보드"로부터 전달된 값을 입력스트림을 사용하여 입력하는 기능을 제공하는 객체
public class ScannerApp {
public static void main(String[] args) {
//step1.
//Scanner 클래스로 객체를 생성하여 변수에 저장
// => 변수에 저장된 객체를 사용하여 메소드 호출하여 원하는 기능 구현
//System.in 객체를 사용하여 키보드로부터 값을 전달받기 위한 Scanner 객체 생성
Scanner scanner=new Scanner(System.in);
//step2.
System.out.print("이름 입력 >> ");
//Scanner.nextLine(): 입력값을 전달받아 문자열로 변환하여 반환하는 메소드
//키보드로 입력된 값을 문자열로 반환받아 변수에 저장
// => 키보드 입력값이 없는 경우 프로그램의 흐름(스레드 - Thread)이 일시 중지
// => 키보드로 값을 입력후 엔터(Enter)를 입력되면 프로그램의 흐름이 다시 실행
String name=scanner.nextLine();
//step3.
System.out.print("나이 입력 >> ");
//Scanner.nextInt(): 입력값을 전달받아 정수값으로 변환하여 반환하는 메소드
//키보드로 입력된 값을 정수값으로 반환받아 변수에 저장 - 키보드로 입력된 값이 정수값이 아닌 경우 예외(Exception) 발생
int age=scanner.nextInt();
//step4.
System.out.println("[결과]"+name+"님의 나이는 "+age+"살입니다.");
//step5.
//Scanner.close(): Scanner 객체를 제거하는 메소드
scanner.close();
}
}
5. 사용자에게 키보드로 정수를 입력받아 학점을 계산하여 출력하는 프로그램
basic > InputCheckApp.java
package basic;
import java.util.Scanner;
// => 100~90 : A, 89~80 : B, 79~70 : C, 69~60 : D, 59~0 : F
// => 키보드로 입력된 점수가 0~100 범위의 정수값이 아닌 경우, 에러메세지 출력 후 재입력되도록 작성
public class InputCheckApp {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
//방법1. if문 이용 - 비권장
/*
System.out.print("점수 입력[0~100] >> ");
int score=scanner.nextInt();
if(score<0 || score>100) {//입력값이 비정상적인 값인 경우
System.out.println("[에러]점수는 0~100 범위의 정수값만 입력 가능합니다.");
System.exit(0);//프로그램 종료
}
*/
//방법2. while문 이용 - 비권장
/*
//반복문의 조건식이 참(true)이 되도록 변수에 비정상적인 정수값을 초기값으로 저장
int score=-1;
while(score<0 || score>100) {//입력값이 비정상적인 경우 반복 실행
System.out.print("점수 입력[0~100] >> ");
score=scanner.nextInt();
if(score<0 || score>100) {
System.out.println("[에러]점수는 0~100 범위의 정수값만 입력 가능합니다.");
}
}
*/
//방법3. do~while문 이용 - 비권장
/*
//do~while 구문을 사용할 경우 변수에 비정상적인 초기값 저장 불필요
int score;
do {
System.out.print("점수 입력[0~100] >> ");
score=scanner.nextInt();
if(score<0 || score>100) {
System.out.println("[에러]점수는 0~100 범위의 정수값만 입력 가능합니다.");
}
} while(score<0 || score>100);//입력값이 비정상적인 경우 반복 실행
*/
//방법4. 무한루프 이용 - 권장
int score;
while(true) {//조건식 대신 [true]를 설정한 경우 무조건 참으로 무한루프 발생
System.out.print("점수 입력[0~100] >> ");
score=scanner.nextInt();
if(score>=0 && score<=100) break;//입력값이 정상적인 경우 반복문 종료
//비정상적인 값이 입력된 경우 에러메세지 출력 후 반복문 재실행
System.out.println("[에러]점수는 0~100 범위의 정수값만 입력 가능합니다.");
}
String grade="";
switch (score/10) {
case 10:
case 9: grade="A"; break;
case 8: grade="B"; break;
case 7: grade="C"; break;
case 6: grade="D"; break;
default: grade="F"; break;
}
System.out.println("[결과]"+score+"점 >> "+grade+"학점");
scanner.close();
}
}
6. 사용자에게 키보드로 메뉴 중 하나를 입력받아 선택메뉴에 대한 기능을 제공하는 프로그램
basic > MenuApp.java
package basic;
import java.util.Scanner;
//키보드로 메뉴 중 하나를 입력받아 선택메뉴에 대한 기능을 제공하는 프로그램
// => [프로그램 종료] 메뉴를 선택하기 전까지 원하는 기능을 계속 제공
// => 선택 메뉴가 존재하지 않을 경우 에러메세지 출력 후 재입력
public class MenuApp {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("<<학생 관리 프로그램>>");
while(true) {//무한루프
//메뉴 출력
System.out.println("1.학생정보 삽입");
System.out.println("2.학생정보 변경");
System.out.println("3.학생정보 삭제");
System.out.println("4.학생정보 검색");
System.out.println("5.프로그램 종료");
//메뉴 선택 - 키보드로 정수값을 입력받아 저장
System.out.print("메뉴 선택[1~5] >> ");
int choice=scanner.nextInt();
if(choice<0 || choice>5) {//비정상적인 값이 입력된 경우
System.out.println("[에러]선택된 메뉴가 존재하지 않습니다.\n");
continue;
}
if(choice==5) {//[5.프로그램 종료] 메뉴를 선택한 경우
break;//반복문 종료
}
switch (choice) {
case 1:
System.out.println("[결과]학생정보를 삽입 하였습니다.");
break;
case 2:
System.out.println("[결과]학생정보를 변경 하였습니다.");
break;
case 3:
System.out.println("[결과]학생정보를 삭제 하였습니다.");
break;
case 4:
System.out.println("[결과]학생정보를 검색 하였습니다.");
break;
}
System.out.println();
}
System.out.println("[메세지]학생 관리 프로그램을 종료합니다.");
scanner.close();
}
}
7. 키보드로 정수값을 5번 입력받아 합계를 계산하여 출력하는 프로그램
exmaple > TotalOneExample.java
package example;
import java.util.Scanner;
//ex) 1번째 정수값 입력 >> 10
// 2번째 정수값 입력 >> 20
// 3번째 정수값 입력 >> 30
// 4번째 정수값 입력 >> 40
// 5번째 정수값 입력 >> 50
// [결과]합계 = 150
public class TotalOneExample {
public static void main(String[] args) {
//🚩my answer
Scanner scanner = new Scanner(System.in);
int tot = 0;
//num변수선언만
int num;
/* for문으로 만들기
*
System.out.print("1번째 정수값 입력 >> ");
num = scanner.nextInt();
tot += num;
System.out.print("2번째 정수값 입력 >> ");
num = scanner.nextInt();
tot += num;
System.out.print("3번째 정수값 입력 >> ");
num = scanner.nextInt();
tot += num;
System.out.print("4번째 정수값 입력 >> ");
num = scanner.nextInt();
tot += num;
System.out.print("5번째 정수값 입력 >> ");
num = scanner.nextInt();
tot += num;
*/
for(int i=1; i <=5; i++) {
System.out.print(i+"번째 정수값 입력 >> ");
//반복문 돌 때마다 num변수에 입력값 담기
num = scanner.nextInt();
tot += num;
}
System.out.println("[결과]합계 = " + tot);
//answer
//반복의 횟수 정해짐 - 입력 명령 5번 하는 것 - for문이 효율적
Scanner scanner = new Scanner(System.in);
int tot=0;
for(int i=1; i <=5; i++) {
//i번째 정수값 입력 >> 출력하기
System.out.print(i+"번째 정수값 입력 >> ");
//입력 담기
int num = scanner.nextInt();
tot += num;//입력값을 tot 변수에 누적
}
System.out.println("[결과]합계 = " + tot);
scanner.close();
}
}
8. 키보드로 정수값을 계속 입력받아 합계를 계산하여 출력하는 프로그램
- (단, 입력된 정수값이 0인 경우 입력을 종료하고 합계 출력)
exmaple > TotalTwoExample.java
package example;
import java.util.Scanner;
//ex) 정수값 입력[0:종료] >> 10
// 정수값 입력[0:종료] >> 20
// 정수값 입력[0:종료] >> 30
// 정수값 입력[0:종료] >> 0
// [결과]합계 = 60
public class TotalTwoExample {
public static void main(String[] args) {
//🚩my answer
Scanner scanner = new Scanner(System.in);
int tot = 0;
int num;
while(true) { //무한루프
//정수출력
System.out.print("정수값 입력[0:종료] >> ");
//출력한 정수를 num변수에 담아,
num = scanner.nextInt();
/*
//누적하기 전 유효성검사 - 예외처리배워야함(Exception)
if(num 정수값이 아니라면?) {
break;
}
*/
tot += num;//tot변수에 누적
if(num == 0) { //단, 입력된 정수값이 0인 경우 입력을 종료하고 합계 출력
break; //반복문 종료
}
}
System.out.println("[결과]합계 = " + tot);
scanner.close();
//answer
//반복횟수 정해지지 않음
//while문 효율적
//무한반복 돌리다가 0 입력하며 종료하기
Scanner scanner = new Scanner(System.in);
int tot = 0;
while(true) {
System.out.print("정수값 입력[0:종료] >> ");
int num = scanner.nextInt();
if(num == 0) break; //반복문 종료(if braek문)
tot += num;
}
System.out.println("[결과]합계 = " + tot);
scanner.close();
}
}
9. 키보드로 정수값을 입력받아 1~9 범위의 정수값을 곱한 결과를 출력하는 프로그램
- (단,키보드로 입력된 정수값은 2~9 범위의 정수값만 허용하면 범위를 벗어난 정수값을 입력한 경우 에러 메세지 출력 후 재입력)
exmaple > GuGuDanExample.java
package example;
import java.util.Scanner;
//키보드로 정수값을 입력받아 1~9 범위의 정수값을 곱한 결과를 출력하는 프로그램을 작성하세요.
//단,키보드로 입력된 정수값은 2~9 범위의 정수값만 허용하면 범위를 벗어난 정수값을 입력한 경우
//에러 메세지 출력 후 재입력하도록 프로그램 작성
//ex) 단 입력[2~9] >> 7
// 7 * 1 = 7
// ...
// 7 * 9 = 63
public class GuGuDanExample {
public static void main(String[] args) {
//🚩my answer
Scanner scanner = new Scanner(System.in);
int dan;
while(true) { //사용자에게 숫자 입력받기 - 입력값 검증을 위한 반복문
System.out.print("단 입력[2~9] >> ");
userNum = scanner.nextInt();
if(dan>=2 && dan<=9) {
break; ;//정상적인 입력값인 경우 반복문 종료
//비정상적인 입력값인 경우 에러메세지 출력 >> 반복문 재실행
} else {
System.out.println("[에러]2~9 범위의 정수값만 입력 가능합니다.");
}
}
//구구단출력문 작성
for(int i=1; i<=9; i++) {
System.out.println(dan+" * "+i+" = "+(dan*i));
}
scanner.close();
}
}
반응형
'java > java' 카테고리의 다른 글
[java] 9. @ Java 어노테이션 (3가지) (0) | 2024.04.22 |
---|---|
[java] 7. JVM(Java Virtual Machine) (4) | 2024.04.12 |
[java] 6. 배열(Array) (0) | 2024.04.11 |
[java] 5. 제어문 (선택문, 반복문, 기타제어문) (2) | 2024.04.11 |
[java] 4. 변수(Variable)와 연산자(Operator) (0) | 2024.04.11 |