[TIL] 제어문 작성시 주의사항, 예제
-
괄호를 가능한 적게 사용하여 코드해석을 용이하게 하도록 하자.
-
코드를 해석하는데 있어 오해가 없도록 하자.
-
for문의 틀을 깨지 말자.
-
코드의 가독성을 중요시하자.
-
조건문은 건들지 않도록 하자.
-
함수를 도구로 이용하자.
for(int y = 0; y<11; y++) {
for(int x = 0; x<11; x++)
if(y==x || y==-x+10)
System.out.print("*");
else
System.out.print(" ");
System.out.println();
}
- 위에 작성한 코드처럼 for문 안에는 건드리지 말고 다른 조건을 이용해 결과를 도출할 것.
- 함수를 이용해 결과예측을 용이하게 할 것.
예제 1. 개수
public static void main(String[] args) throws IOException {
//res/data.txt에 담겨진 성적의 개수를 알아보고
// 그 개수를 res/data-count.txt 파일에 저장하시오.
File dataFile = new File("res/data.txt");
FileInputStream dataFis = new FileInputStream(dataFile);
Scanner fscan = new Scanner(dataFis);
File countFile = new File("res/data-count.txt");
FileOutputStream countFos = new FileOutputStream(countFile);
PrintStream fout = new PrintStream(countFos);
int count = 0;
while(fscan.hasNext()){
fscan.next();
count++;
}
// count is 120 처럼 저장할 것
fout.printf("count is %d\n", count);
fscan.close();
fout.close();
dataFis.close();
countFos.close();
System.out.println("프로그램 종료");
- 입력버퍼와 출력버퍼 코드의 위치를 바꿔 자원소모를 줄여주도록 하자.
예제 2. 최대값
public class Program {
public static void main(String[] args) throws IOException {
File dataFile = new File("res/data.txt");
FileInputStream dataFis = new FileInputStream(dataFile);
Scanner fscan = new Scanner(dataFis);
// --- count를 계산하기 -----
int max = 0;
while(fscan.hasNext()) {
String x_ = scan.next();
int x = Integer.parseInt(x_);
if(x>max)
max = x;
}
fscan.close();
dataFis.close();
// ---count를 출력하기 -------
File countFile = new File("res/data-max.txt");
FileOutputStream countFos = new FileOutputStream(countFile);
PrintStream fout = new PrintStream(countFos);
fout.printf("max is %d", max);
fout.close();
countFos.close();
- int score = scan.nextInt()로 할 경우 중간에 숫자가 아닌 값이 들어갈 때에는 오류가 날 수 있다.
예제 3. 평균
public static void main(String[] args) throws IOException {
File dataFile = new File("res/data.txt");
FileInputStream dataFis = new FileInputStream(dataFile);
Scanner fscan = new Scanner(dataFis);
int sum = 0;
int count = 0;
float avg ;
//---연산하기------
while(fscan.hasNext()) {
String x_ = scan.next();
int x = Integer.parseInt(x_);
sum += x ;
count ++;
}
avg = (float)sum/count;
fscan.close();
dataFis.close();
//---출력하기----------
File countFile = new File("res/data-avg.txt");
FileOutputStream countFos = new FileOutputStream(countFile);
PrintStream fout = new PrintStream(countFos);
fout.printf("avg is %f", avg);
fout.close();
countFos.close();
- max, avg 로직을 한 루프로 묶으면 성능을 아낄 수 있다.
- max, avg 로직을 나눌 경우 가독성이 좋고 코드 유지보수에 유리할 수 있다.
예제 4. '*' 앞치마
for (int y = 0; y < 10; y++) {
for (int x = 0; x < 11; x++) {
if (y == -x+10 || y == x || (y>=-x+10 && y >= x))
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
Author And Source
이 문제에 관하여([TIL] 제어문 작성시 주의사항, 예제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@psh94/TIL-제어문-작성시-주의사항저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)