2013-11-28 2 views
0

는 기본적으로 나는 단위당 총-직원 비용,화면에 출력이 쓰여지고 출력 파일에 출력됩니까?

<shop unit> 
<sales assistants> 
<hours> <rate> 

Unit One 
4 
32 8 
38 6 
38 6 
16 7 

Unit Two 
0 

Unit Three 
2 
36 7 
36 7 

9 개 단위 개까지 간다 다음과 같은 형식으로 아래의 입력을 계산하는 입력 파일에서 일부 데이터를 읽어 몇 가지 계산을해야했다 ..

그런 다음 "권장 최대"(RM) 인 사용자 입력을 허용하고이를 단위당 총 직원 비용과 비교해야했습니다. 단위당 총 직원 비용이 RM보다 작거나 같으면 세부 정보가 화면과 results.txt라는 출력 텍스트 파일에 작성되어야합니다. 금액이 RM보다 큰 경우 결과는 화면에만 기록되어야합니다. 어쨌든 여기 아래에있는 내 코드이며, 문제가 비트 메신저 위에서 언급 한 출력 만 가게 단위 (9) 출력 파일로 인쇄되어 콘솔에 시간 아무 것도 인쇄의 대부분 :

if (total > reccomended_max) { 
    System.out.println("The total staff wages for " + Unitnum + " is £" + total + ", therefore it is larger than the RM"); 
} else if (total == reccomended_max) { 
    System.out.println("The total staff wages for " + Unitnum + " is £" + total + ", therefore it is equal to the RM"); 
} else { 
    System.out.println("The total staff wages for " + Unitnum + " is £" + total + ", there it is less than the RM"); 
} 

I 그것은 if 문을 많이 가지고 있기 때문에 내 코드를 짧게했습니다. 많은 if 및 else 또는 else 문을 제거하는 데 적합한 디자인 패턴은 무엇입니까?

+0

코드를 쉽게 읽을 수 있도록 포맷 할 수 있습니까? –

+0

더 읽기 쉽게 만드는 방법은 무엇입니까? – user2863681

+0

질문을 편집하고 적절한 탭/간격을 사용하십시오. –

답변

0

위임하지 마십시오 System.out! 필요한 경우 두 스트림 모두에 결과를 작성하십시오.

if (total > reccomended_max){ 
    String message = "The total staff wages for " + ...; 
    try (PrintStream out = new PrintStream(new FileOutputStream("output.txt", true))) { 
     out.println(message); 
    } // here, the stream will be automatically flushed and closed! 

    System.out.println(message); 
} else { 
    System.out.println("The total staff wages for " + Unitnum + " is £" +total + ", therefore it is lower than the RM"); 
} 
+0

Uhmm이 작동하지 않는 것 같습니다. IF 문을 올바른 위치에 배치 했습니까? – user2863681

+0

@ user2863681 죄송합니다, FileOutputStream에 '추가'플래그를 설정하는 것을 잊었습니다. 없으면 파일을 항상 덮어 씁니다. 이제는 스트림이 생성 될 때마다 추가해야합니다. – isnot2bad

+0

스트림을 처음 시작할 때 한 번만 열면 더 좋습니다. 따라서 try (...) 문을 루프와 닫는 bracktes 전에 옮길 수 있습니다. – isnot2bad

관련 문제