본문 바로가기
JAVA/[JAVA]codeUp 기초100제 자바

[JAVA]codeUp 기초100제 자바 1021~1030번

by oncerun 2020. 2. 26.
반응형

1021.

1개의 단어를 입력받아 그대로 출력해보자.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String word = scan.next();
		System.out.println(word);
		scan.close();
	}

}
	

1022.

공백 문자가 포함되어 있는 문장을 입력받고 그대로 출력하는 연습을 해보자.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String  sentence= scan.nextLine();
		System.out.println(sentence);
		scan.close();
	}

}

1023.

실수 1개를 입력받아 정수 부분과 실수 부분으로 나누어 출력한다.

 

● Integer.valueOf(String)란

매개변수로 기본형 변수와 객체를 지정해 String객체로 반환한다.

 

Integer.valueOf(String)와 Integer.parseInt(String) 차이점

Integer.valueOf(String)는 String이 Integer.parseInt(String)한 거랑 똑같이 해석됩니다. 그러나, valueOf(String)은 new Integer()으로 객체를 반환하고 parseInt(String)은 int 기본 자료형을 반환합니다.

결론적으로 문자열을 변환할 때 기본 자료형이 아닌 객체로 받아오고 싶을 때는 valueOf(String)을 쓰시면 되고. 그게 아닐 경우는 parseInt(String)을 쓰시면 됩니다.

 

일단 이렇게

StringTokenizer는 단 한 개의 구분자만을 사용할 수 있으므로 복잡한 구분자를 사용해야 할 때는

Scanner 나 split을 사용해야 한다.

import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) {
	Scanner scan = new Scanner(System.in);
	String fl = scan.nextLine();
	StringTokenizer tk = new StringTokenizer(fl,".");
	
	while(tk.hasMoreTokens()) {
		System.out.println(tk.nextToken());
	}
			
			
	}
}

1024.

단어를 1개 입력받는다.

입력받은 단어(영어)의 각 문자를

한 줄에 한 문자씩 분리해 출력한다.

 

Split 메서드를 사용해서 구분자를("") 공백으로 처리 후 나눠 넣을 생각이다

etc. 정규표현식이 들어가므로.으로 구분하고 싶을 땐 \\.으로 처리를 해줘야 된다.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); // 입력
		String word = scan.next(); // 입력값을 Str word변수에저장
		String[] array_words = new String[word.length()]; // 입력받은 문자열의길이만큼에 배열을 생성

		array_words = word.split(""); // 문자열을 한글자씩 분리후 배열에담아

		for (int i = 0; i < word.length(); i++)
			System.out.printf("'%s'\n",array_words[i]); // 출력

	}
}

1025.

charAt (문장 중에 인덱스 위치에 해당되는 문자 추출하기)
 charAt(index)에서 index값에 해당되는 자리에서 문자 하나를 추출합니다.
자바에서는 제곱근을 구할 때 ^라는 기호를 사용하지 않고

Math.pow라는 함수를 사용하는데

Math.pow(밑, 지수) 형태이며

함수의 입출력이 전부 double형인 실수형이다.

valueOf() 메서드는 () 괄호 안의 해당 객체를 String 객체로 변환시키는 역할을 합니다. 말 그대로 String의 객체로 형 변환입니다. 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); // 입력
		String num = scan.next();
		int idx =0; //0번째 인덱스부터 내림차순
		
		for(int i = num.length()-1; i>=0; i--) //내림차순이니 감소형식
	       System.out.println("[" + Integer.parseInt(String.valueOf(num.charAt(idx++))) * (int) Math.pow(10,i) + "]");
			//valueOf로 입렵값의 0번째 인덱스 부터 정수로변환후
            //Math.pow함수의 10과 num.length-1제곱을한뒤 곱한다.
            //반복은 입력받은 문자열 갯수 -1 만큼해줘야하는데 제곱근식이 성립하기위해서고
            //i범위가 0을포함하는 이유는 모든 0의거듭제곱근은1 1의자리까지 출력하기위함
           
	}
}

1026.

입력되는 시:분:초에서 분만 출력해보자.

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); // 입력
		String time = scan.nextLine();
		
		String[] times = time.split(":");
		
			System.out.printf("%d",Integer.parseInt(times[1]));
	}
}

times가 스트링 배열로 % s로 출력하게 되면 6:00:00분을 입력받았을 때

분을 출력하면 00이 나오지만 정수형으로 바꾸게 되면 정수는 00이 없기 때문에 0이 출력됨.

 

1027.

년월일을 출력하는 방법은 나라마다, 형식마다 조금씩 다르다.

연월일(yyyy.mm.dd)을 입력받아,

일 월년(dd-mm-yyyy)으로 출력해보자.

(단, 한 자리 일/월은 0을 붙여 두 자리로, 년도도 0을 붙여 네 자리로 출력한다.) 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); // 입력
		String date = scan.nextLine();
		String[] dates =date.split("\\.");
		
		System.out.printf("%s-%s-%s", dates[2],dates[1],dates[0]);
		
	}
}

. 은 정규표현식 전부를 표현하므로 역 슬래쉬 두 개를 붙임.

 

1028.

정수 1개를 입력받아 그대로 출력해보자.
(단, 입력되는 정수의 범위는 0 ~ 4,294,967,295이다.)

참고
-2147483648 ~ +2147483647 범위의 정수를 저장하고 처리하기 위해서는
int 형으로 변수를 선언하면 된다.(int로 선언하고 % d로 받고 출력)

하지만 이 범위를 넘어가는 정수를 저장하기 위해서는
보다 큰 범위를 저장할 수 있는 다른 데이터형을 사용해야 정상적으로 저장시킬 수 있다.

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
		
		Scanner scan = new Scanner(System.in); // 입력
		long num =scan.nextLong();
		
		System.out.println(num);
	}
}

 

1029.

실수 1개를 입력받아 그대로 출력해보자.
(단, 입력되는 실수의 범위는 +- 1.7*10-308 ~ +- 1.7*10308이다.) 308이다.)

참고
float 데이터형을 사용하면 +- 3.4*10-38 ~ +- 3.4*1038 범위의 실수를 저장할 수 있다.
(float로 선언하고 % f로 입력받아 출력하면 된다.)

이 범위를 넘어가는(더 작거나 더 큰) 실수를 저장하기 위해서는
보다 큰 범위를 저장할 수 있는 다른 데이터형을 사용해야 정상적으로 저장시킬 수 있다.
double은 더 정확하게 저장할 수 있지만, float보다 2배의 저장 공간이 필요하다.

 

import java.math.BigDecimal;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan =new Scanner(System.in);
		BigDecimal bigDecimal = scan.nextBigDecimal();
		System.out.println(bigDecimal);
		
	}
}
  • BigDecimal Java 언어에서 숫자를 정밀하게 저장하고 표현할 수 있는 유일한 방법이다.
  • 소수점을 저장할 수 있는 가장 크기가 큰 타입인 double은 소수점의 정밀도에 있어 한계가 있어 값이 유실될 수 있다.
  • Java 언어에서 돈과 소수점을 다룬다면 BigDecimal은 선택이 아니라 필수이다.
  • BigDecimal의 유일한 단점은 느린 속도와 기본 타입보다 조금 불편한 사용법뿐이다.

 

1030.

 

  정수 1개를 입력받아 그대로 출력해보자. 단, 입력되는 정수의 범위는 -9,223,372,036,854,775,808 ~
 +9,223,372,036,854,775,807이다.
  
 

import java.math.BigDecimal;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
			Scanner scan = new Scanner(System.in);
			BigDecimal bigDecimal = scan.nextBigDecimal();
			System.out.println(bigDecimal);
	}

}
반응형

댓글