개발자 미니민의 개발스터디

[JAVA] 자바 - Stirng 클래스 Quiz 풀이 모음(1) ⭐⭐

by mini_min

[JAVA]
자바 - Stirng 클래스

Quiz 풀이 모음

풀릴 땐 너무 좋은데... 수업들어도 이해 가는데 혼자 풀면 정말 아득해지는 문제풀이...ㅜㅜ

 

✔️ 정수를 입력 받아 정수의 길이 구하기

Scanner sc = new Scanner(System.in);
int n, len;
String a;

// 문자열로 받아서 길이 구하는 것이 합리적
// 정수 입력받기
System.out.println("정수 ? ");
		n = sc.nextInt();
        
a = Stirng.format("%d", n);

len = a.length();

System.out.println(n + " : " + len + "자리 정수");
		sc.close();

 

 

 

✔️ 수식을 받아 입력 받은 수식을 계산해서 출력

🏷️ 수식 예시) 3+5 (모두 양수인 경우로 가정)

 

//수식을 입력 받아 수식을 계산하여 출력,
부호는 입력 불가. (switch 로 선택할듯)

Scanner sc = new Scanner(System.in);

String s;
int n1 = 0;
int n1 = 0;

System.out.println("수식[3+4} ? ");
s = sc.nextLine();

//혹시나 있을 공백 모두 없애기
s = s.replaceAll("\\s", "");	//혹시 공백있으면 없애기

 

💡 해결해보기
- 일단 입력 받은 수식은 부호가 있기 때문에 문자열로 받아야할 것.
- 혹시 있을 공백 모두 없앤 순수한 문자열로 만들기

 

//만약, 사칙연산이 아닐 경우, 종료문 내고 종료하기

if(! s.matches("^\\d+[\\+|\\-|\\/|\\*]+\\d+$"))		//  \\d 는 1글자 이상
	System.out.println("입력 형식 오류...");
		sc.close();
		return;
        

// 연산자 4가지를 만들어서 operator 배열 생성
// operator 가 있는 부분 위치 변수 생성
// Integer.ParseInt 로 String -> int 로 변환
for(String operator : new String[] {"+", "-", "/" , "*" }) 
	int position = s.indexOf(operator);
    
    if(position > 0) {
    n1 = Integer.ParseInt(s.substring(0,positon));
    n2 = Integer.ParseInt(s.substring(positon+1));
    
    int result = 0;
		switch(operator) {
		case "+" : result = n1+n2; break;
		case "-" : result = n1-n2; break;
		case "*" : result = n1*n2; break;
		case "/" : result = n1/n2; break;

 

💡 해결해보기
- 일단, 사칙연산이 문자열에 들어와서 matches 되지 않는 경우, 클래스 종료 선언문을 만든다.

- 이제 오류가 없는 경우, 연산자를 골라낸다. 연산자 배열 operator 를 생성한 뒤, operatro 위치 함수를 만든다.
operator 위치를 기점으로 문자열을 잘라서 int 형으로 변환해서 계산할 것이기 때문!
operator 함수의 위치 값을 도출해내는 식은 indexOf () 를 사용한다.

 

 

 

✔️ 점수를 입력 받아 1부터 입력받은 정수 한 줄에 10개씩 출력

출력할 수에 3, 6, 9는 개수만큼 *로 출력한다.

- replace 사용해야할듯, 스캐너, for로 10번 반복 후 줄 넘김

 

Scanner sc = new Scanner(System.in);
int n;

System.out.println("정수는 ? ");		//끝값이 되는 정수
	n = sc.nextInt();
    
  String s;
  for(int i=0; i<=n; i++) {
  	s = Integer.toString(i);
  	s = s.replace("3|6|9", "*");
  }
  
  //반대 경우 정리. 공백으로
  if(s.indexOf("*") != -1) 
  	s = s.replace("\\d", "");
    
   System.out.printf("%5s", s);
		
	if(i%10==0) {
		System.out.println();
	}

 

💡 스캐너로 받는 값은 정수값이며, for 문으로 1부터 받은 int n 값까지를 출력한다.
이때, 출력될 1값부터 Integer.toString 으로 문자열로 변환한다.
그리고 문자열에 replace를 써서 "3|6|9" 에 해당되는 문자는 별로 바꿔준다.

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기