8. 종합 예제
문제 (1) 1~999까지 3과 5의 배수의 합
public class Sample {
public static void main(String[] args) {
int sum = 0;
for (int i=1; i<1000; i++) {
if (i %3 == 0 || i %5 == 0) {
sum += i;
}
}
System.out.println(sum);
}
}
문제 (2) 게시판 페이징하기
public class Sample {
static int getTotalPage(int m, int n) {
if (m % n == 0) {
return m / n;
} else {
return m / n + 1;
}
}
public static void main(String[] args) {
System.out.println(getTotalPage(5,5));
System.out.println(getTotalPage(7,5));
System.out.println(getTotalPage(30,11));
System.out.println(getTotalPage(30,10));
}
}
- getTotal 메소드를 생성한다. 입력인자는 총 게시물수와 한페이지 당 게시물 수 두개로 하고, 두 입력인자가 나누어 떨어진다는 것은 한 페이지당 게시물을 꽉채운다는 의미이므로 m/n을 리턴하고, 나누어 떨어지지 않을 경우 나머지 게시물을 게시할 페이지가 하나 더 필요하기 떄문에 m/n+1을 리턴한다. main 메소드에서 메소드를 호출할 때엔 메소드가 static으로 선언되었기 때문에 클래스로 부터 호출하거나 그 자체로 사용할 수 있다.
문제 (3) 숫자의 자리수 구하기
sol 1)
import java.util.Scanner;
public class Sample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.printf("수 입력 : ");
String n = scanner.nextLine();
System.out.println(n.length());
}
}
- 숫자를 문자열로 입력을 받아서 문자열의 길이를 출력하면 쉽게 자리수를 구할 수 있다.
sol 2)
public class Sample {
static int getDigitNum(int n) {
int count = 0;
while (true) {
if (n == 0) {
break;
}
n /= 10;
count++;
}
return count;
}
public static void main(String[] args) {
System.out.println(getDigitNum(123456));
}
}
- 반복문을 이용해서 수를 10으로 계속 나누면서 count를 올리고 0이 되었을 때의 count가 자리수임을 이용했다.
문제 (4) 공백을 제외한 글자수 세기
import java.util.Scanner;
public class Sample {
static int getLetter(String line) {
line = line.replace(" ", "");
return line.length();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.printf("문장 입력 :");
String sentence = scanner.nextLine();
System.out.println(getLetter(sentence));
}
}
- 문장에 포함된 띄어쓰기를 replace 함수를 이용해서 띄어 쓰기를 없앤 상태로 변수에 다시 저장하고, 그 변수의 길이를 리턴하는 메소드를 만들었다.