개발세발

[Java/자바][코드업] 기초 100제 - 1011~1020 본문

문제풀기/코드업 codeup.kr

[Java/자바][코드업] 기초 100제 - 1011~1020

뉼👩🏻‍💻 2022. 1. 21. 16:46
728x90
반응형
SMALL

1011 : [기초-입출력] 문자 1개 입력받아 그대로 출력하기(설명)

import java.util.*;

public class Main {
  public static void main (String [] args) {
        char x;
        Scanner sc = new Scanner(System.in);
        x = sc.next().charAt(0);
        System.out.println(x);  
    }
}

 sc.next().charAt(0); 개념을 몰라서 한참 검색했다. 

입력받은걸 char로 바꿔주고 그걸 x에 대입하고, x을 출력하고 .. 라는 과정 

 

 

** charAt()이란?

: String 으로 저장된 문자열 중 한 글자만 선택해서 char 타입으로 변환해준다. 

Scanner 는 값을 받을 때 char 타입으로 입력받을 수 없고 String 타입으로 값을 받아야 한다. 

그래서 char타입으로 변수를 저장하기 위해서는 대안인 charAt()을 사용해줘야한다.

 

그래서 

Scanner sc = new Scanner(System.in);

char c = '' ;    //char 는 ' ' 사용

c = sc.next().charAt(0); 

System.out.println(c);

sc.close();

====================================
안녕
안

 

charAt의 index 0번째 값인 '안'이 출력된 것이다. 

charAt(1)로 설정하면 '녕'이 출력된다. 

 

 

1012 : [기초-입출력] 실수 1개 입력받아 그대로 출력하기(설명)

import java.util.*;

public class Main {
    public static void main (String [] args) {
        float x;
        Scanner sc = new Scanner(System.in);
        x = sc.nextFloat();
        System.out.printf("%f", x);
    }
}

printf 사용법을 몰라서 엄청 틀린 문제. 

 

 

1013 : [기초-입출력] 정수 2개 입력받아 그대로 출력하기(설명)

import java.util.*;

public class Main {
    public static void main (String [] args) {
         int x;
         int y;
        
        Scanner sc = new Scanner(System.in);
        x = sc.nextInt();
        y = sc.nextInt();
        
        System.out.printf("%d %d", x, y);
    }
}

 

 

1014 : [기초-입출력] 문자 2개 입력받아 순서 바꿔 출력하기(설명)

import java.util.*;

public class Main {
	public static void main (String [] args) {
    	Scanner sc = new Scanner(System.in);
        
        String x = sc.next(); 
        String y = sc.next();
        sc.close();
        
    System.out.println(y + " " + x);
    }    
}

 

 

1015 : [기초-입출력] 실수 입력받아 둘째 자리까지 출력하기(설명)

import java.util.Scanner;

public class Main {
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);
        float c = sc.nextFloat();
        
        System.out.printf("%.2f", c);
        sc.close();
    }
}

소수점 자리 출력을 할줄 모라서 prinf 작성하는걸 다시 찾아보고 공부했다.

 

 

1017 : [기초-입출력] 정수 1개 입력받아 3번 출력하기(설명)

import java.util.*;

public class Main {
    public static void main (String[] args) {
        
        Scanner sc = new Scanner(System.in);
        
        int a = sc.nextInt();
        System.out.printf("%d %d %d", a, a, a);    
    }
}

 

 

1018 : [기초-입출력] 시간 입력받아 그대로 출력하기(설명)

[1018 1번 정답(printf 문 사용) ]

import java.util.*;

public class Main {
    public static void main (String[] args){
        Scanner sc = new Scanner(System.in);
        int h;
        int m;
       	
        sc = new Scanner(sc.next()).useDelimiter(":");
        h = sc.nextInt();
        m = sc.nextInt();
        System.out.printf("%d:%d", h,m);
    }
}

 

[오답]

import java.util.Scanner;

public class Main {
	public static void main (String [] args) {
    	
        Scanner sc = new Scanner(System.in);
        
        int h = sc.nextInt();
        int m = sc.nextInt();
 
        System.out.println(h + ":" + m);
    }
}

익숙한 println문을 쓰고 싶어서 저렇게 써봤는데 실행 중 에러가 뜨면서 

Exception in thread "main" java.util.InputMismatchException
	at java.util.Scanner.throwFor(Scanner.java:864)
	at java.util.Scanner.next(Scanner.java:1485)
	at java.util.Scanner.nextInt(Scanner.java:2117)
	at java.util.Scanner.nextInt(Scanner.java:2076)
	at Main.main(Main.java:9)

이런 오류값이 나왔다. 

찾아보니 input값과 다른 값이 들어와서 발생하는 오류라고 한다. 

그래서 int랑 long 값으로 바꿨는데도 오류가 떠서 결국 printf 로 돌아왔다. 

이클립스에서는 정상적으로 출력값이 나오는데 코드업에서는 안된다... 

 

찾아보니 String arr[] = sc.next().split(":"); 로 만들고 배열을 출력하니 된다. 

 

[1018 2번 정답(배열 사용]

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        String time[] = scanner.next().split(":");
        System.out.println(time[0]+":"+time[1]);
    }
}

 

 

 

1019 : [기초-입출력] 연월일 입력받아 그대로 출력하기

import java.util.Scanner;

public class Main {
    public static void main (String [] args) {
        
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String [] arr = a.split("\\.");
        
        int y = Integer.parseInt(arr[0]);
        int m = Integer.parseInt(arr[1]);
        int d = Integer.parseInt(arr[2]); 
        
        System.out.printf("%04d.%02d.%02d", y, m, d);
    }
}

배열 - split 개념을 몰라서 계속 틀렸다.

split 값을 기준으로 배열을 나눌 수 있다. 

 

[Splilt(String Rex)] 

공백(" ") 으로 분리

String[] ArraysStr = str.split(" ");

쉼표(",") 로 분리

String[] ArraysStr = str.split(",");


 

 

1020 : [기초-입출력] 주민번호 입력받아 형태 바꿔 출력하기

import java.util.Scanner;

public class Main {
    public static void main (String [] args) {
        
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        
        a = a.replace("-", "");
        System.out.println(a);
    }
}

replace를 이용하면 a->b 처럼 원하는 문자로 대체가능하다. 

 

 

 

[Review] 

모르는 개념들이 많아서 오류 엄청 뱉다가 겨우 풀었다. 당시 풀고 나서는 일단 알맞은 코드를 입력했다로 얼렁뚱땅 다시 넘어간게 많았다. 다시 정리하면서 확인해보니 아직도 제대로 이해못한 개념들도 많아서 겸사겸사 다시 정리했다. 

728x90
반응형