ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (JAVA) 자바 스캐너(Scanner)로 파일 내용 읽어오기
    JAVA/컨셉 , 예제 2018. 8. 24. 13:33

    스캐너는 표준 입력(Stdin, 키보드)을 받을 수 있도록 돕는 객체이다. String을 비롯한 primitive 타입들로 변환해 받을 수 있도록 메소드들을 제공하고 있다. 주요 메소드와 특징 간단하게 정리하자면

    next()
    문자열 반환함수. 공백(space)를 만나면 종료된다.
    nextLine()
    문자열 반환함수. 개행(Enter)를 만나면 종료된다. next()와 달리 띄어쓰기를 할 수 있다.
    nextInt()
     int 타입 반환함수. 
    nextDouble()
    double 타입 반환 함수.
    package com.naver.cafe.club.biz; import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String temp = ""; while(true){ System.out.println("하고싶은 말을 입력하세요. 종료하고 싶으면 quit 입력하세요"); temp = sc.nextLine(); if(temp.equals("quit")){ System.out.println("프로그램을 종료합니다."); sc.close(); break; } else { System.out.println("하고싶은 말은 : "+ temp + " 입니다."); } } } }

    temp.equals 메소드는 문자열 값 비교 메소드이다. c언어의 경우 == 를 통해 값 비교가 되지만 자바에서는 객체 주소를 비교하기 때문에 값 비교를 할 수 없다. 이해가 안된다면 자바에서 문자열 비교하는 방법으로 받아들이도록 하자.

    연녹색이 키보드 입력값이고, 결과가 잘 나온다. 예제 코드는 값들을 문자열로 받기 때문에 숫자를 입력받아도 int형이 아니라 String형의 데이터로 받아진다. 123을 가지고 연산을 하고 싶어도 할 수가 없다는 말이다. 빨간 박스 안의 123을 보자. 이 값은 123으로 얼핏 보기에는 숫자가 왔다. 이 값을 + 기호를 써서 더할 수 있을까? String 타입이기 때문에 그렇지 않다. 계산을 하고자 하는 의도를 가지고 코드를 작성한다면 nextInt 메소드를 사용해 값을 입력받아야 한다는 말이다. 다음 예제를 보자

    package com.naver.cafe.club.biz; import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num1 = 0; int num2 = 0; System.out.println("덧셈을 시작합니다!"); System.out.println("첫번째 숫자를 입력하세요"); num1 = sc.nextInt(); System.out.println("두번째 숫자를 입력하세요"); num2 = sc.nextInt(); System.out.println(num1 + " + " + num2 + " = " + (num1 + num2) + " 입니다. "); } }

    수행 결과는 다음과 같다. 의도하는 결과를 가져온 것이다. String 변수의 경우 + 연산이 이어붙이는 것을 의미하기 때문에 10 + 50의 결과가 1050이 나온다. 래퍼 클래스 포스팅에도 이와 관련된 내용을 포스팅했다. 좀더 생각해보고 싶다면 다음 포스팅 참조
    http://blog.naver.com/p952973/220914277305


    알고리즘 문제 풀기 위해 텍스트 파일을 input으로 입력받으려고 했다. 지금껏 c로 풀었는데 교육을 받으면서 자바를 손에 익게 하고 싶었다.

    c에서는 표준입력을 바꿔주는 freopen 함수를 사용했던 것 같은데 자바에서는 스캐너(Scanner) 객체를 이용한다. 내가 파악한 방법은 두가지다.

    1. Scanner sc = new Scanner(WhitePrincess.class.getResourceAsStream("sample.txt")); // 현재 폴더에서 파일 검색 2. Scanner sc = new Scanner(new FileInputStream("C:/Users/206-001/workspace/0118/src/sample.txt")); // 절대경로로 파일 검색

    1. 클래스에서 제공하는 gerResourceAsStream 메소드를 이용하는 것. 현재 폴더부터 파일 탐색하므로 파일명만 알면 사용 가능
    WhitePrincess는 클래스명.

    2. FileInputStream 객체를 이용하는 방법. 파일의 절대 경로를 알아야 사용 가능함.



    sample.txt가 자바 파일과 같은 경로에 존재하고 있어야 한다.
    이 과정은 생략.


Designed by Tistory.