<한글코딩>
test.txt파일에 정수 입력 하나 해줌
경로를 입력하는 코드로 작성(path)
텍스파일에 정수를 하나 입력한 후 저장
io
//사용자와 업다운 게임지정
입력받아야 하니 스캐너가 필요
언제까지 정답을 맞춰야 될 지모르는 얼만큼 돌릴지 모르는 반복문
첫번째 범위(1~100)wjd
1~100까지의 정수입력 할 수 있게 해줌
만약 텍스트에 있는 정수값과 비교해서 위면 업
아래면 다운
만약 입력한 값보다 업이면 업을 출력하고 다운이면 다운을 출력함
두번째 범위(입력정수+-1)
위에서 나온 입력정수가 업이라면 입력정수 +1에서 100까지
다운이라면 입력정수 -1 에서 1까지
세번째 범위
정수를 하나 입력하게 하고
첫번째 정수값(+1,-1)과 두번째 정수 값 사이의 값(+1,-1)을 범위로 설정해준다
(업일 때는 +1 다운 일 때는 -1)
답이 나올 떄까지 반복
답이 나오면 반복문 종료하고
총 n번만에 정답을 맞추셨습니다 라고 출력
그리고 io기능을 이용해서 결과파일 생성
(총 n번만에 정답을 맞추셨습니다)이 문구를 텍스트파일로 만듦
+오류사항 //유효성 검사
만약 범위에 벗어나는 수를 입력하면
잘못된 입력이라고 출력
그리고
만약 정수가 아닌 문자열로 입력시에도
잘못된 입력이라고 출력
그리고 정답맞추기 시도횟수(n번) 카운팅 대상에 넣지 않는다.
오류는 세지 않는다;;
package practices;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class Practice {
public static void main(String[] args) {
//컴퓨터에 저장되었던 내용 불러오기
//문제하나) 어떻게 텍스트파일에 들어있는 정수를 정수로 저장하는가??
//interger.을 해서 읽은 문자열을 정수 변환하는 함수로 바꿈.
String path = "D:\\JANG\\resource\\";
String fileName = "test.txt";
int num=-1; //파일에서 읽은 정수를 저장할 변수 (int는 기본값이 -1 null이 아니다.)
//맞힐 숫자
try {
FileReader fr=new FileReader (path+fileName);//단지 읽어주기만
BufferedReader br = new BufferedReader(fr);//입력받기전 버퍼리더
String msg=br.readLine();//파일에서 한줄 읽기
if(msg!=null) {
try {
num=Integer.parseInt(msg); //읽은 문자열을 정수로 변환★
System.out.println("텍스트파일에 있는 정수는>>" +num);
} catch (NumberFormatException e) {
System.out.println("읽을 수 없습니다");
}
}else {
System.out.println("내용이 없습니다");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {//String msg=br.readLine()을 써서 발생한 캐치
e.printStackTrace();
}
//업다운 게임 시작.
Scanner sc=new Scanner(System.in);
int inputNum; //사용자가 입력할 번호
int n=0;//n번의 시도
int rangeStart=1;
int rangeEnd=100;
while(true) {
try {
System.out.print("숫자를 입력해주세요(1~100까지)>>");
inputNum=sc.nextInt();
if(1>inputNum||inputNum>100) {
System.out.println("잘못된 입력입니다.1부터 100까지의 숫자만 넣어주세요");
continue; //잘못된 입력의 경우, 카운트 하지 않는다.
}
if(inputNum==num) {
System.out.println("정답입니다^^");
break;
}
if(inputNum<num) {//77보다 낮은 숫자를 넣으면 업이라고 출력해야 한다
System.out.println("업!");
rangeStart=inputNum+1;
n++;
}
else {
System.out.println("다운!");
rangeEnd=inputNum-1;
n++;
}
} catch (Exception e) {
System.out.println("잘못된 입력입니다. 다시 입력해주세요");
sc.nextLine();c
e.printStackTrace();
}
}
}
}
comments) 마지막 숫자 유의!!
package practices;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
// 컴퓨터에 저장되었던 내용 불러오기
// 문제하나) 텍스트 파일에 들어있는 정수를 정수로 저장하는 방법
String path = "D:\\JANG\\resource\\";
String fileName = "test.txt";
int num = -1; // 파일에서 읽은 정수를 저장할 변수 (int는 기본값이 -1)
// 맞힐 숫자
try {
FileReader fr = new FileReader(path + fileName); // 단지 읽어주기만
BufferedReader br = new BufferedReader(fr); // 입력받기 전에 버퍼리더
String msg = br.readLine(); // 파일에서 한 줄 읽기
if (msg != null) {
try {
num = Integer.parseInt(msg); // 읽은 문자열을 정수로 변환★
System.out.println("텍스트파일에 있는 정수는 >> " + num);
} catch (NumberFormatException e) {
System.out.println("읽을 수 없습니다");
}
} else {
System.out.println("내용이 없습니다");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) { // String msg=br.readLine()을 써서 발생한 캐치
e.printStackTrace();
}
// 업다운 게임 시작.
Scanner sc = new Scanner(System.in);
int inputNum; // 사용자가 입력할 번호
int n = 0; // n번의 시도
int rangeStart = 1;
int rangeEnd = 100;
System.out.println("업다운 게임을 시작합니다! 정답은 1부터 100까지의 숫자입니다.");
while (true) {
try {
System.out.println("범위: " + rangeStart + " ~ " + rangeEnd);
System.out.print("숫자를 입력해주세요(1~100까지)>> ");
inputNum = sc.nextInt();
// 숫자 범위 체크
if (inputNum < rangeStart || inputNum > rangeEnd) {
System.out.println("잘못된 입력입니다. " + rangeStart + "부터 " + rangeEnd + "까지의 숫자만 넣어주세요.");
continue; // 잘못된 입력의 경우, 카운트 하지 않는다.
}
// 정답 확인
if (inputNum == num) {
System.out.println("정답입니다! 축하합니다.");
System.out.println("시도한 횟수: " + (n + 1) + "번");
break; // 게임 종료
}
// 업다운
if (inputNum < num) {
System.out.println("업!");
rangeStart = inputNum + 1; // rangeStart를 업!으로 조정
} else {
System.out.println("다운!");
rangeEnd = inputNum - 1; // rangeEnd를 다운!으로 조정
}
// 범위가 좁혀진 상태에서 더 이상 시도할 수 없는 경우를 처리
if (rangeStart > rangeEnd) {
System.out.println("잘못된 입력입니다. 범위가 엇갈렸습니다. 게임을 다시 시작해주세요.");
break; // 게임 종료 (비정상적인 상태)
}
n++; // 시도 횟수 증가
} catch (Exception e) {
System.out.println("잘못된 입력입니다. 숫자만 입력해주세요.");
sc.nextLine(); // 잘못된 입력을 받으면 입력 버퍼를 비운다
}
}
}
}
'JAVA > 코드' 카테고리의 다른 글
다형성의 예시 (0) | 2025.02.23 |
---|---|
자바 -클래스 (0) | 2025.02.17 |
JAVA의 메소드 유형 (0) | 2025.02.02 |
정렬 - 선택, 버블, 삽입 (0) | 2025.01.30 |
강의 4일차 문제 풀기 (0) | 2025.01.30 |