ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 6장 연습문제
    java 2023. 1. 27. 12:46

    Q1. 입력 숫자의 합 (콘솔입출력 scanner , sc.nextInt()이용)

    import java.util.Scanner;
    
    public class Sample{
        public static void  main(String[] args) {
            Scanner sc = new Scanner(System.in);
            Scanner sc2 = new Scanner(System.in);
    
            System.out.println(sc.nextInt() + sc2.nextInt());
        }
    }
    import java.util.Scanner;
    
    public class Sample{
        public static void  main(String[] args) {
            Scanner sc = new Scanner(System.in);
            Scanner sc2 = new Scanner(System.in);
    
            int value1 = sc.nextInt();
            int value2 = sc.nextInt();
            int result = value1 + value2;
            System.out.println(result);
            
        }
    }

    Q2 대문자로 변경하기 (콘솔입출력 scanner, sc.nextLine() 엔터칠떄까지 그문자열을 입력받음)

    영문을 입력하고 엔터를 입력하면 입력한 영문을 대문자로 변경하여 출력하는 프로그램을 작성하시오 ( 단 사용자가 END라는 문자열을 입력하기 전까지 반복해서 문장을 입력받을 수 있게 하시오)

     

    • toUpperCase()메소드는  문자열 영문을 대문자로 변경한다.
    • while(true)로 무한루프를 돌리고 END를 입력하는 경우만 반복문을 빠져나가게 설계한다.
    import java.util.Scanner;
    
    public class Sample{
        public static void main(String[] args) {
    
            while(true){
                Scanner sc = new Scanner(System.in);
                System.out.println("영어 문장을 입력하세요");
                String line = sc.nextLine();
    
                if ("END".equals(line)) {
                    break;
                }else{
                    System.out.println(line.toUpperCase());
                }
            }
    
        }
    }

    Q3. 다음 예는 파일 입출력 예시이다. sample.txt라는 파일에 문자열을 저장한 후 다시 그 파일을 읽어서 출력한 프로그램이다.

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.FileWriter;
    
    
    public class Sample{
        public static void main(String[] args) {
            FileWriter fw = new FileWriter("sample.txt");
            fw.write("Write once, run anywhere");
    
            BufferedReader br = new BufferedReader(new FileReader("sample.txt"));
            String line = br.readLine();
            System.out.println(line);
        }
        
    }

    다음과 같이 코드를 짜면 우리가 예상한 Write once, run anywhere가 출력되는것이 아닌 null이 출력된다.

    그이유는 파일 읽기와 쓰기를 한 후 파일을 닫아주지 않았기 때문이다. 아래와 같이 파일 읽기쓰기 후엔 꼭 닫아주어야한다.

     

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.FileWriter;
    
    
    public class Sample{
        public static void main(String[] args) {
            FileWriter fw = new FileWriter("sample.txt");
            fw.write("Write once, run anywhere");
            fw.close();
    
            BufferedReader br = new BufferedReader(new FileReader("sample.txt"));
            String line = br.readLine();
            System.out.println(line);
            br.close();
        }
    
    }

    Q4. 사용자의 입력을 파일에 저장하기

    사용자의 입력을 파일에 저장하는 프로그램을 작성해보자. (단 프로그램을 다시 실행하더라도 기존에 작성한 내용을 유지하고 새로 입력한 내용을 추가해야한다.)

    - 파일 쓰기에서 줄바꿈문자를 추가할필요없는 printerwriter를 사용한다. 

    - 이미작성된내용에 추가하고 싶다면 추가모드로 열어 추가내용을 작성한다. 어떻게? append에 true를

    - PrintWriter의 두번째 파라미터에 ture를 전달하면 파일의 내용이 초기화되지 않고 이어서 쓰여진다.

    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Scanner;
    
    
    public class Sample{
        public static void main(String[] args) throws IOException {
    
            PrintWriter pw = new PrintWriter(new FileWriter("/Users/leezoo/projects/jump2java/out.txt",true));
            Scanner sc1 = new Scanner(System.in);
            String line = sc1.nextLine();
            pw.write(line);
            pw.close();
    
        }
    }

    Q5 파일 내용 바꾸어 저장하기

    replaceAll 함수를 이용해서 파일 내용을 바꾸어 저장해봅시다.

    replaceAll사용법

    String a = "Hello Java";
    System.out.println(a.replaceAll("Java","World"); // Hello World 출력

    이예제선 리스트만들기, 파일입출력, 리스트를 문자열로 만들기, 문자열 내용 교체 등 다양한 문법이 쓰인다.

    1. 파일을 읽어서 줄 단위로 리스트 변수 a에 하나씩 저장하는것

    2. 리스트 데이터를 다시 문자열로 만들어주는것 (줄바꿈 문자를 포함해서) ->String.join사용

    
    import java.io.*;
    import java.util.ArrayList;
    
    
    public class Sample{
        public static void main(String[] args) throws IOException {
            ArrayList<String> a = new ArrayList<>(); //문자열을 하나씩 저장할 리스트 생성
            BufferedReader br = new BufferedReader(new FileReader("/Users/leezoo/projects/jump2java/out.txt"));
            //파일 읽기 겍체생성
    
            while (true) {
                String line = br.readLine(); //한줄씩 읽는다
                if(line == null)break; //만약 더 읽어들일 정보가 없으면 반복문을 빠져나가고
                a.add(line); //읽어들일 정보가 있으면 읽어들인 정보를 리스트에 인덱싱한다.
    
            }
            System.out.println(a); //a = [Life is too short, you need python]
            br.close();
    
    
            String text = String.join("\n", a); //문자열 리스트를 ("\n") 로 이어붙여준다
            System.out.println(text);
    //        text = Life is too short
    //               you need python
    
            text = text.replaceAll("python", "java");
    
            //파일쓰기
            FileWriter fw = new FileWriter("/Users/leezoo/projects/jump2java/out.txt");
            fw.write(text);
            fw.close();
        }
    }

    2023.01.12 - [점프 투 자바] - [점프 투 자바 3장] 자료형과 형변환

     

    [점프 투 자바 3장] 자료형과 형변환

    3-1 숫자 자료형 정수 자바의 정수를 표현하기 위한 자료형은 int , long int age = 10; long countOfStar = 87984751321246845L; /*long변수에 값을 대입할때는 숫자 값이 int자료형의 최대값인 2147483647보다 큰 경우

    lee-ding.tistory.com

     

    https://wikidocs.net/book/31

     

    점프 투 자바

    **초보 프로그래머를 위한 자바 입문서** 이 책은 문법위주의 지식보다는 이해중심의 지식을 전달하는 것을 주 목적으로 한다. 예를 들어 자바에서 잘 파악하기 힘든 개념 중 …

    wikidocs.net

     

    'java' 카테고리의 다른 글

    ClassCastException  (0) 2023.01.31
    String.join  (0) 2023.01.27
    5장 연습문제  (1) 2023.01.25
    4장 연습문제  (0) 2023.01.22
    [java] 함수형 프로그래밍 (람다, 스트림)  (0) 2023.01.20

    댓글

lee-ding