배열 예제
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
// 배열. 두 방식 다 작성 가능
// 일반적으로 1차원 배열,2차원 배열 많이 사용함. 3차원 배열도 가끔 씀
// int num[]= new int[5];
int[] num = new int[5];
Scanner sc = new Scanner(System.in);
System.out.println("정수 입력하세요");
// 배열을 만들고 초기값을 설정안하면 디폴트값이 존재
// String:null, int:0, boolean:False(0)
// for문안에서 쓰인 변수는 지역변수. 다른 for문의 지역변수와는 서로 겹치지 않음
for (int i = 0; i < num.length; i++) {
num[i] = sc.nextInt();
}
// 시작값과 끝값이 정해져 있으므로 배열 + 반복문 함께쓰는 게 간편
for (int i = 0; i < num.length; i++) {
System.out.println("num[" + i + "]: " + num[i]);
}
// 배열의 갯수
System.out.println("배열의 갯수: " + num.length); // 배열의 length 메소드만 ()가 없다.
System.out.println("배열의 마지막 방 번호: " + (num.length - 1));
sc.close();
}
}
실행결과
만년 달력 만들기
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) {
/*
//만년달력
1년 1월 1일 : 월요일부터 시작
주의에 있는 날짜를 7로 나누면 나머지가 일요일:0 ~ 토요일:6으로 떨어지게 된다.
현재시점 : 2018.12.01
(y-1)*365+ 윤년의 갯수(2월 29일 카운팅) : 2017.12.31까지의 일 수
2017년*365일 + 윤년의 갯수(2월 29일 카운팅)+ 올해 전월까지의 날수(31일+28일+31일+30일...11.30까지의 달마다 일수)
+ 이번 달 일수(1일이라면 +1) = 현재시점까지의 날 수
날수/7을 하면 나오는 나머지 활용(ㅁ%7==0 이면 일요일, 0~6사이의 값)
2018년 12월 1일은 나눴을 때 6이 나왔기 때문에 토요일이다.
*/
Scanner sc = new Scanner(System.in);
//1~12월마다 일수가 며칠인지 알려주기 위해 배열을 만듦
int months[] = {31,28,31,30,31,30,31,31,30,31,30,31};
int y, m, nalsu, i, week;
//년도 입력시 0년 이전은 오류가 발생하도록 제약조건이 필요
do{
System.out.print("년도?"); //2018
y = sc.nextInt();
}while(y<1);
//월수 입력시 1~12월로 입력
do{
System.out.print("월?"); //12
m = sc.nextInt();
}while(m<1 || m>12);
//입력한 연도가 윤년이면 배열에서 2월의 일자를 29로 바꿔주면 됨.
//윤년에 따른 2월의 날수 계산
if(y%4==0 && y%100!=0 || y%400==0){
months[1] = 29;
}
//1년1월1일 부터 y-1년12월31일 까지의 날수
nalsu = (y-1)*365 + (y-1)/4 - (y-1)/100 + (y-1)/400 ;
//윤년의 개수
//int yy = (y-1)/4 - (y-1)/100 + (y-1)/400;
//System.out.println(yy);
//월 : 1 2 3 4 5 6 7 8 9 10 11 12
//배열 : {31,28,31,30,31,30,31,31,30,31,30,31}
//idx : 0 1 2 3 4 5 6 7 8 9 10 11
for(i=0;i<m-1;i++) {
nalsu += months[i]; //nalsu = nalsu + months[i];
}
//1년1월1일 부터 y년m월1일 까지의 날수
nalsu += 1; //nalsu = nalsu +1;
//y년m월1일 의 주의 수 계산
week = nalsu%7;
//System.out.println(week);
System.out.println("\n 일 월 화 수 목 금 토"); // 두칸SPACE + 한글1글자 : 4byte
System.out.println("------------------------------");
//월의 1일을 작성할 때 주의수에 따른 공백을 만들어준 뒤 작성해야함
for(i=0; i<week; i++){ //6이면 토요일의 자리까지 공백을 찍어줌
System.out.print(" ");//공백4칸
}
//해당 월의 날짜 출력
for(i=1; i<=months[m-1];i++){
System.out.printf("%4d",i); //자릿수를 4byte씩 유지해라.
week++;
if(week%7 == 0){
System.out.println();
}
}
if(week%7!=0){
System.out.println();
}
System.out.println("------------------------------");
sc.close();
}//endmain
}//endclass
실행결과
년,월,일을 입력받아 요일을 출력하세요
import java.util.Scanner;
public class Test6 {
public static void main(String[] args) {
// 년,월,일을 입력받아 요일을 출력하세요
// 2018년 12월 3일 월요일
Scanner sc = new Scanner(System.in);
int months[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int y, m, nalsu, i, week, day;
String w[] = {"일", "월", "화", "수", "목", "금", "토"};
do {
System.out.print("년도?"); // 2018
y = sc.nextInt();
} while (y < 1);
do {
System.out.print("월?"); // 12
m = sc.nextInt();
} while (m < 1 || m > 12);
do {
System.out.print("일?"); // 31
day = sc.nextInt();
} while (day < 1 || day > months[m-1]);
if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) {
months[1] = 29;
}
nalsu = (y - 1) * 365 + (y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400;
for (i = 0; i < m - 1; i++) {
nalsu += months[i];
}
nalsu += day;
week = nalsu % 7;
System.out.printf("%d년 %d월 %d일은 %s요일입니다.", y, m, day, w[week]);
sc.close();
}
}
실행결과
비워진 마름모 찍기
public class Test7 {
public static void main(String[] args) {
//123456789
//1234 6789
//123 789
//12 89
//1 9
//---------
//12 89
//123 789
//1234 6789
//123456789
//a:행, b:왼쪽, C:오른쪽
for (int a = 0; a < 5; a++) {
for (int b = 0; b < 5; b++) {
System.out.print(b < 5 - a ? "*" : " "); //12345
}
for (int c = 0; c < 4; c++) {
System.out.print(c >= a - 1 ? "*" :" "); //6789
}
System.out.println();
}
for (int a = 0; a<4; a++) {
for(int b = 0; b<5; b++) {
System.out.print(a+1>=b?"*":" "); //12345
}
for(int c = 4; c > 0; c--) {
System.out.print(a+2>=c?"*":" "); //6789
}
System.out.println();
}
}
}
실행결과
(1)+(1+2)+(1+2+3)+...+(1+2+3+...+10) 합계 구하기
public class Test8 {
public static void main(String[] args) {
// (1)+(1+2)+(1+2+3)+...+(1+2+3+...+10)
//방법1
int i, j;
int sum = 0;
for (i = 1; i <= 10; i++) {
for (j = 1; j <= i; j++) {
sum += j;
}
}
System.out.println("(1)+(1+2)+(1+2+3)+...+(1+2+3+...+10):" + sum);
//방법2
int n, sum1, sum2;
n=sum1=sum2=0;
while(n<10){
n++; //1 2 3 4 5 6 7 8 9 10
sum1 +=n; //1 3 6 10 15 21 28 36 45 55
sum2 += sum1; //1 4 10 20 35 56 84 120 165 220
}
System.out.println(sum2);
}
}
실행결과
1에서 100까지 수의 홀수의 합, 짝수의 합, 전체의 합
public class Test9 {
public static void main(String[] args) {
// 1에서 100까지 수의 홀수의 합, 짝수의 합, 전체의 합
int num[] = new int[100];
int sum = 0;
int sum1 = 0;
int sum2 = 0;
for (int i = 0; i < 100; i++) {
num[i] = i + 1;
// System.out.println(num[i]);
if (num[i] % 2 == 0) {
sum1 += num[i]; //짝수합
} else {
sum2 += num[i]; //홀수합
}
sum = sum1 + sum2; //전체합
}
System.out.println("1~100의 전체의 합:" + sum);
System.out.println("1~100의 짝수의 합:" + sum1);
System.out.println("1~100의 홀수의 합:" + sum2);
}
}
실행결과
1-2+3-4+5-6+7-8+9-10 연산
public class Test10 {
public static void main(String[] args) {
// 1-2+3-4+5-6+7-8+9-10 연산하기_방법1
int num[] = new int[10];
int sum = 0;
for (int i = 0; i < 10; i++) {
num[i] = i + 1;
if (num[i] % 2 == 0) {
sum -= num[i];
} else {
sum += num[i];
}
}
System.out.println("1-2+3-4+5-6+7-8+9-10 = " + sum);
// 1-2+3-4+5-6+7-8+9-10 연산하기_방법2
int tot = 0;
for(int j=1;j<=10;j++){
tot = (j%2==0)? tot-j : tot+j;
}
System.out.println("1-2+3-4+5-6+7-8+9-10 = " + tot);
}
}
실행결과
1에서 100까지의 수중 3의 배수의 갯수
public class Test11 {
public static void main(String[] args) {
// 1에서 100까지의 수중 3의 배수의 갯수
int cnt = 0;
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0) {
cnt++;
}
}
System.out.println("1에서 100의 숫자 중 3의 배수 갯수: " + cnt);
}
}
실행결과
두수를 입력받아 적은 수에서 큰수까지의 합 1 10
import java.util.Scanner;
public class Test12 {
public static void main(String[] args) {
//선언
int i, j, k, tot;
int max, min;
//변수 초기화
max = min = tot = 0;
//입력
Scanner sc = new Scanner(System.in);
System.out.print("두 수를 입력하세요.");
i = sc.nextInt();//30
j = sc.nextInt();//20
//연산
if (i > j) {
max = i;
min = j;
}
if (j > i) {
max = j;
min = i;
}
for (k = min; k <= max; k++) {
tot += k;
}
//출력
System.out.printf("%d에서 %d까지의 합 : %d", min, max, tot);
sc.close();
}
}
실행결과
'Dev > Java' 카테고리의 다른 글
[java] 전역/지역변수, 버블정렬,구구단만들기 (0) | 2019.01.22 |
---|---|
[java] 선택정렬, 난수, 가위바위보 게임만들기 (0) | 2019.01.22 |
[java] for문, switch문 (0) | 2019.01.21 |
[java] 반복문 (0) | 2019.01.21 |
[java] 간단한 계산기 만들기 (0) | 2019.01.21 |