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("──────────────────────────────────────────");
	}
}

 

+ Recent posts