System.out(객체)API함수는 대상이 있다.
대상을 개체와 객체로 나눌수있다.
출력버퍼(개체)를 사용하기 위해 실체화(=객체화=인스턴스화)해서 객체를 만들어야한다.
객체 = 실존물 = 실체
객체를 호명 할 수있어야한다. (네것인지, 내것인지)
객체는 명칭이 부여되거나 소유격을 통해 참조한다.
*오류종류
- 구문오류
- 논리적버그 : 컴파일러에게는 오류가 아니지만, 개념적으로 아닌것
- 입력값 오류
System.in.read(); 사용
int code = System.in.read();
입력버퍼인 System.in와 read()메소드를 이용해서 입력.
콘솔창에 임의의 값을 입력하면 입력버퍼에 값이 담긴다.
System.out.printf()를 통해 출력을한다.
35를 입력했을때,
%d 는 3의 아스키코드값 51을 출력
%c 는 3을 char타입으로 바꾸어 'c'를 출력
즉 3에 대해서만 출력한다. (숫자하나에 대해서만 출력)
두 개의 숫자 입력후 그 두 개를 출력하려면:
80을 입력했을때, 8과0 에 대해 모두 출력하려면
code = System.in.read();
System.out.printf();를 한번씩 더 넣어야 두개의 숫자에 대해 출력이된다.
위의 %d 는 8의 아스키코드 값 56을 출력
아래의 %d 는 0의 아스키코드 값 48을 출력
보이는 그대로 출력하려면 ?
아스키코드값이 아닌 보이는그대로 출력한다면
System.out.printf("code1 is %d\n",code1-48);
8은 아스키코드에서 56이고 48을빼야 8이나오므로 code에서 48을빼준다.
숫자 하나를 입력받아 그대로 출력하고자 할때 아스키코드 값 48을 빼주어야한다.
하지만 출력이 8과 0각각되므로
두 코드를 붙여서 출력하려면
(code1-48)*10+(code2-48); 으로 코드를 더해줘야 80으로 출력된다.
아스키코드값 문자변환과 숫자갯수만큼 메소드를 넣는 번거로움을 해결할 함수가 있다.
Scanner scan = new Scanner(System.in);
Scanner를 이용해서 80이라는 문자를 그대로 불러와서 숫자로 변환해줄 수있다.
Scanner scan = new Scanner(System.in);
new연산자를 통해 객체를 생성한다.
scan은 Scanner의 이름이다. (변수선언과 비슷)
다른 Scanner와 식별이 가능하도록 이름을붙여준다.
System.in은 Scanner가 사용하는 부품이다.
개체 Scanner를 이용해 scan이라는 객체를 만들어준다.
String line = scan.next();
Scanner를 통해 입력받은 값을 String형 변수 line에 넣어준다.
Scanner사용시 import를 해줘야한다.
impot : 개체가 다른것들과 중복되지않도록 식별자역할을 한다.
도구사용시 도구가 속한 패키지명을 같이써야하지만 상단에 한번만 명명해주면 사용가능.
java.util패키지의 Scanner 클래스를 이용하는것.
java.util.Scanner; // 상단에 명명해주면
java.util.Scanner scan = new java.util.Scanner(System.in);을
Scanner scan = new Scanner(System.in); 로만 사용가능.
단축키
ctrl + / : 주석처리
ctrl + shift + / : 범위주석처리 /**/ , 서식중간에도 사용가능
alt + 화살표 : 코드이동
next()메소드
nextLine() 문자열을 모두 입력받아 리턴.
next()단어단위로, 공백 이전까지만 문자열리턴
nextInt()정수로
기본형 과 참조형
기본형 : byte, short, int, long , char, float, double, boolean
기본형 변수에는 값을 담는다.
참조형 : String
참조형 변수에는 이름만 붙인다.
변수선언
int a = 3;
변수선언시 타입과 변수명을 선언 한후 초기화한다.
a는 값을 담는 변수가 된다.
Scanner scan은 객체를 담는 변수다(이름표). 정해놓은 명칭을 통해 도구(Scanner)를 쓰게된다.
실습
*성적입력하고 출력하기.
import java.io.IOException;
import java.util.Scanner;
class Test {
public static void main(String[] args) throws IOException {
int kor, eng, math;
int total;
float avg;
kor = 0;
eng = 0;
math = 0;
System.out.println("┌──────────────────────────────────────────┐");
System.out.println("│ 성적 입력 │");
System.out.println("└──────────────────────────────────────────┘");
//여기에 성적을 입력하는 코드를 작성하시오
Scanner scan = new Scanner(System.in);
System.out.printf("국어 : ");
kor = scan.nextInt(); //공백까지만 출력
System.out.printf("영어 : ");
eng = scan.nextInt(); //공백까지만 출력
System.out.printf("수학 : ");
math = scan.nextInt(); //공백까지만 출력
total = kor + eng + math;
avg = total / 3f;
System.out.println("┌──────────────────────────────────────────┐");
System.out.println("│ 성적 출력 │");
System.out.println("└──────────────────────────────────────────┘");
System.out.printf("국어 : %d\n",kor);
System.out.printf("영어 : %d\n",eng);
System.out.printf("수학 : %d\n",math);
System.out.printf("총점 : %d\n",total);
System.out.printf("평균 : %5.2f\n",avg);
System.out.println("──────────────────────────────────────────");
}
}
- Scanner scan = new Scanner(System.in); 으로 입력값을 받는다.
- System.out.printf("국어 : "); 무엇을 입력해줘야하는지 묻는 출력문을 넣는다.
- kor = scan.nextInt(); 입력받은 값을 kor에 넣는다.
- System.out.printf("국어 : %d\n",kor); 입력받은 값을 출력한다.
*메모장에있는 내용 출력하기
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
class Hello {
public static void main(String[] args) throws IOException {
int kor, eng, math;
int total;
float avg;
kor = 0;
eng = 0;
math = 0;
//여기에 성적을 입력하는 코드를 작성하시오
FileInputStream fis = new FileInputStream("C:\\Users\\yh\\Desktop\\202102\\workspace\\data.txt");
Scanner scan = new Scanner(fis);
kor =scan.nextInt();
eng = scan.nextInt();
math = scan.nextInt();
total = kor + eng + math;
avg = total/3.0f;
System.out.println("┌─────────────────────────────────────────┐");
System.out.println("│ 성적 출력 │");
System.out.println("└─────────────────────────────────────────┘");
System.out.printf("국어 : %d\n",kor);
System.out.printf("영어 : %d\n",eng);
System.out.printf("수학 : %d\n",math);
System.out.printf("총점 : %d\n",total);
System.out.printf("평균 : %5.2f\n",avg);
System.out.println("──────────────────────────────────────────");
}
}
'2021 Newlecture > JAVA' 카테고리의 다른 글
제어구조 / FileStream을 통해 파일복사 (0) | 2021.03.05 |
---|---|
쉬프트연산 / 진법 / 0x000000ff과 교집합 (0) | 2021.03.05 |
FileInputStream으로 Bitmap File Size 출력 (0) | 2021.03.04 |
산술연산/ 단항,비교논리,비트,쉬프트 연산자/ FileStream이용한 메모장 입력출력 (0) | 2021.03.03 |
이스케이프문자, 포멧문자열, 형식지정자, print()함수 (0) | 2021.02.26 |
개체와 객체 / 아스키코드/ 이클립스설치/System.out.println() (0) | 2021.02.25 |
자바 프로그래밍이란 ? (1) | 2021.02.25 |
자바 변수선언 / 부동소수점 / 함수의 역할/ OutputStream (0) | 2021.02.23 |