public class Ex01 {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}


스캐너를 확인할 수 없습니다.
생성한 스캐너 객체의 이름과 받는 스캐너 이름이 달라서 에러발생!
package step1;
import java.util.Scanner;
public class Ex02 {
public static void main(String[] args) {
Scanner scanner1 = new Scanner(System.in);
int num1 = scanner1.nextInt();
Scanner scanner2 = new Scanner(System.in);
int num2 = scanner2.nextInt();
int sum = num1+num2;
System.out.println(sum);
}
}
이름을 수정해주면 된다
이렇게 하면 이클립스에서는 돌아가지만 백준에서는 런타임 오류가 발생한다.
찾아보니 입력 받을때 Scanner를 한번만 사용해야한다고 한다.
package step1;
import java.util.Scanner;
public class Ex02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int sum = num1+num2;
System.out.println(sum);
}
}
Scanner를 한번만 사용하도록 수정하여 같은 결과를 얻었지만 아직 Scanner에 대하여 자세히 몰라서 원리는 이해가 가지않는다.
package step1;
import java.util.Scanner;
public class Ex02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int sum = num1-num2;
System.out.println(sum);
}
}
2번 문제와 동일 사칙연산 부분만 수정
package step1;
import java.util.Scanner;
public class Ex02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int sum = num1*num2;
System.out.println(sum);
}
}
package step1;
import java.util.Scanner;
public class Ex02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double num1 = scanner.nextDouble();
double num2 = scanner.nextDouble();
double sum = num1/num2;
System.out.println(sum);
}
}
첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.
라는 조건이 있어 int 타입이 아닌 double 타입으로 수정해주었다.
첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다.
package step1;
import java.util.Scanner;
public class Ex02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
System.out.println(num1+num2);
System.out.println(num1-num2);
System.out.println(num1*num2);
System.out.println(num1/num2);
System.out.println(num1%num2);
}
}
준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오.
import java.util.Scanner;
public class Ex07 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String id = scanner.nextLine();
System.out.println(id + "??!");
}
}
문자를 입력받아 id에 저장한 후 "??!"을 추가해 출력
서기 + 544 = 불기
package step1;
import java.util.Scanner;
public class Ex08 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int year1 = scanner.nextInt();
int year2 = year1 - 543;
System.out.println(year2);
}
}
package step1;
import java.util.Scanner;
public class Ex09 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int A, B, C;
A = scanner.nextInt();
B = scanner.nextInt();
C = scanner.nextInt();
System.out.println((A+B)%C);
System.out.println(((A%C)+(B%C))%C);
System.out.println((A*B)%C);
System.out.println(((A%C)*(B%C))%C);
}
}

입력받은 수의 일의 자리, 십의 자리, 백의 자리 수를 가지고 와야하는데 charAt 같은 함수를 int타입에서도 있는지 확인해봤지만 없었다
그래서 입력받은 수의 일의 자리 수를 구하기 위해 입력받은 수를 10으로 나누고 그 몫을 또 10으로 나누어서 구하려고 하다가
10으로 나눈 나머지가 일의 자리가 아닐까 생각이 들었다
비슷한 방식으로 십의 자리, 백의 자리 숫자를 구했다
package baekjoon;
import java.util.Scanner;
public class Ex10 {
public static void main(String[] args) {
// System.out.println("세 자리수 입력: ");
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
// System.out.println("두번째 세 자리수 입력");
int num2 = sc.nextInt();
System.out.println(num1 * (num2%10));
System.out.println(num1 * ((num2/10)%10));
System.out.println(num1 * (num2/100));
System.out.println(num1 * num2);
}
}
import java.util.Scanner;
public class Ex11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
System.out.println(num1+num2+num3);
}
}

정답은 제대로 나왔지만 런타임에러가 뜸
입력조건을 확인하면 10^12 까지의 입력값이 주어질텐데 int 타입은 10^9의 크기만큼만 표현가능해서 에러가 뜬다
int 타입을 10^18까지 입력받을 수 있는 long타입을 사용하여 풀어야 한다.
import java.util.Scanner;
public class Ex11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long num1 = sc.nextLong();
long num2 = sc.nextLong();
long num3 = sc.nextLong();
System.out.println(num1+num2+num3);
}
}

자바에서 몇몇 문자는 단독으로 출력할 수 없다.
대표적으로 백슬래시와 큰 따옴표가 있다.
백슬래시와 큰 따옴표를 출력하기 위해서 Escape Sequance를 써야하는데
백슬래시(\) + 문자 조합으로 쓰인다
public class Ex12 {
public static void main(String[] args) {
System.out.println("\\ /\\");
System.out.println(" ) ( ')");
System.out.println("( / )");
System.out.println(" \\(__)|");
}
}

12번과 같은 유형의 문제
public class Ex13 {
public static void main(String[] args) {
System.out.println("|\\_/|");
System.out.println("|q p| /}");
System.out.println("( 0 )\"\"\"\\");
System.out.println("|\"^\"` |");
System.out.println("||_/=\\\\__|");
}
}