출력에 대해 서식을 지정하고 그 서식에 값을 대입하는 것으로 아래와 같이 사용할 수 있습니다.
print("실행결과: {0}, {1}".format("1번", "2번"))
실행결과: 1번, 2번
2. %옵션의 사용 예
%옵션은 format옵션과 마찬가지로 문자열 포맷팅 기술입니다. 대입하려는 값의 타입과 길이를 지정할 수 있으며 아래와 같이 사용할 수 있습니다.
print("실행결과: %s, %s"%("1번", "2번"))
실행결과: 1번, 2번
3. 두 가지를 혼합하여 print하기
print("실행결과: %{0}s".format(5)%"ab") 실행결과: ab
format을 통해 값이 들어간 후 %옵션이 실행되기 때문에 위와 같이 사용 가능
구현
replayCount = 0;
star = "*";
replayCount = int(input("몇 번 반복하시겠습니까? "));
for i in range(0,replayCount,1):
print("%{0}s".format(replayCount)%star);
star+="*";
import java.util.Scanner;
public class StarExam {
public static final String STAR = "*";
// star-1번 과제
void starOne() {
for (int i = 1; i <= 12; i++) {
System.out.print(STAR);
if (i % 4 == 0)
System.out.println(); // 4개씩 끊어서 출력
}
}
// star-2번 과제
void starTwo() {
for (int i = 1; i < 4; i++) {// 행
for (int j = 0; j < i; j++) { // i행일때 별 개수 i개 입력
System.out.print(STAR);
}
System.out.println();
}
}
// star-3번 과제
void starThree() {
int fr = 2;
for (int i = 1; i < 4; i++) { // 행
for (int j = 1; j <= 3; j++) {// 열
if (j <= fr) { // 공백
System.out.print(" ");
} else { // 별
System.out.print(STAR);
}
}
fr--;
System.out.println();
}
}
// star-4번 과제
void starFour() {
int fr = 2, ba = 3;
for (int i = 1; i <= 3; i++) {// 행
for (int j = 1; j <= 6; j++) {// 열
if (j <= fr) {// 공백 삽입
System.out.print(" ");
} else if (j > ba) {// 공백 삽입
System.out.print(" ");
} else { // 별 삽입
System.out.print(STAR);
}
}
fr--;
ba++;
System.out.println();
}
}
// star-5번 과제
void starFive() {
int fr = 3, ba = 3; // 공백이 들어가는 조건 fr앞 공백, ba뒷 공백 조건으로 사용
for (int i = 1; i <= 5; i++) { // 5번 반복
for (int j = 1; j <= 5; j++) { // 5열 생성
if (j < fr) { // 각 열을 fr과 비교해 공백이 들어갈 부분에 공백 삽입, 중간열을 기준으로 앞 공백
System.out.print(" ");
} else if (j > ba) { // 각 열을 ba와 비교해 공백 삽입, 중간열을 기준으로 뒷 공백
System.out.print(" ");
} else { // 별이 들어갈 곳
System.out.print(STAR);
}
}
if (i < 3) { // 중간층까지 별 개수를 늘리도록 조건을 증가 및 감소
fr--;
ba++;
} else { // 중간층 이후 별 개수를 줄이도록 조건을 증가 및 감소
fr++;
ba--;
}
System.out.println();
}
}
// star-6번 과제
void starSix() {
Scanner sc = new Scanner(System.in);
System.out.print("몇층까지 하겠습니까? (홀수만 가능):");
int re = sc.nextInt(); // 층 입력
if (re % 2 == 0) {
System.out.println("홀수를 입력해주세요.");
} else {
int fr = re / 2 + 1, ba = re / 2 + 1; // 공백이 들어가는 조건 fr앞 공백, ba뒷 공백 조건으로 사용
for (int i = 1; i <= re; i++) { // i를 입력받은 re층 만큼 반복
for (int j = 1; j <= re; j++) { // j는 입력받은 re의 열 만큼 반복
if (j < fr) { // 앞부분이 공백이 들어가는 조건일 경우 공백 삽입
System.out.print(" ");
} else if (j > ba) { // 뒷 부분이 공백이 들어가는 조건일 경우 공백 삽입
System.out.print(" ");
} else {
System.out.print(STAR);
}
}
if (i < re / 2 + 1) { // 중간층까지 별 개수를 늘리도록 조건을 증가 및 감소
fr--;
ba++;
} else { // 중간층 이후 별 개수를 줄이도록 조건을 증가 및 감소
fr++;
ba--;
}
System.out.println();
}
}
}
public static void main(String[] args) {
StarExam starexam;
starexam = new StarExam(); // static이 아닐 경우 new를 해야한다.
// 클래스로 받아 오는것들은 static이다
Scanner sc;
sc = new Scanner(System.in);
int num1;
String replay;
do {
System.out.print("1~6 입력");
num1 = sc.nextInt();
switch (num1) { // 번호에 따라 case를 나눈다
case 1:
starexam.starOne();
break;
case 2:
starexam.starTwo();
break;
case 3:
starexam.starThree();
break;
case 4:
starexam.starFour();
break;
case 5:
starexam.starFive();
break;
case 6:
starexam.starSix();
break;
default: // 다른 값이 들어올 경우
System.out.println("잘못 입력했습니다.");
}
System.out.println("다시 하시겠습니까? (Y/N)");
replay = sc.next(); // 비교할 값을 입력받음
} while (replay.equals("y") || replay.equals("Y"));
// replay가 "y"나 "Y"일 경우 true값으로 do를 반복
System.out.println("끝났습니다."); // false일 경우 출력 후 종료
}
}