97 Java実践:文字列/数字の判別


Java練習問題(文字列、数字に関するAPIを使用)


1.リストされた数値で特定の条件に一致する数値を検索

  • 3の排水面Fizz,5の排水面Buzz,3,5の排水面PizzBuzzを出力する.
  • public class Quiz1 {
    	public static void main(String[] args) {
    		int[] numbers = new int[30];
    		int number = 0;
    		for (int i=0; i<30; i++) {
    			number++;
    			numbers[i] = number; 
    		}
    		fizzBuzz(numbers);
    	}
    	public static void fizzBuzz(int[] numbers) {
    		// TODO 3의 배수면 Fizz, 5의 배수면 Buzz, 3과 5의 배수면 PizzBuzz를 출력하시오.
    		for (int number : numbers) {
    			if (number%3 == 0 && number%5 != 0) {
    				System.out.print(number);
    				System.out.println(": Fizz");
    			}
    			if (number%3 != 0 && number%5 == 0) {
    				System.out.print(number);
    				System.out.println(": Buzz");
    			}
    			if (number%15 == 0) {
    				System.out.print(number);
    				System.out.println("PizzBuzz");
    			}
    		}
    	}
    }

    2.特定文字列が対称か否かを判別する


    例)オーディオ、雁など
    public class Quiz2 {
    	public static void main(String[] args) {
    		phrasePalindrom("홍길동");
    		phrasePalindrom("오디오");
    		phrasePalindrom("기러기");
    	}
    	public static void phrasePalindrom(String word) {
    		// 문자열을 앞으로 뒤로부터 읽어도 똑같은 문자면 true를 출력한다.
    		// 길이가 3인 문자열이라면 첫글자, 마지막 글자만 비교하면 되지만 그 이상일 경우도 고려해야 한다.
    		// 대칭 여부를 확인하는 것이므로 문자열의 중앙을 기준으로 절반만 검사하면 된다.
            // 이 때 문자열 길이의 홀짝에 따라 수식이 달라진다.
    		int endNum;
    		if (word.length()%2 == 0) {
    			endNum = word.length()/2;
    		} else {
    			endNum = (word.length()+1)/2;
    		}
    		
    		for (int i=0; i<endNum ; i++) {
    			int symmetricIndex = word.length()-(i+1);
    			if (word.charAt(i) != word.charAt(symmetricIndex)) {
    				System.out.println(false);
    				return;
    			}
    		}
    		System.out.println(true);
    	}
    }

    3.単語の中間文字を出力する

  • 単語の長さが奇数の場合、ハングル文字を出力し、単語の長さが偶数の場合、中間の2文字を出力します.
  • public class Quiz4 {
    	public static void main(String[] args) {
    		middleCharacter("서울특별시");
    		middleCharacter("중앙HTA학원");
    		middleCharacter("대용량데이터베이스솔루션");
    	}
    	public static void middleCharacter(String word) {
    		// 단어의 가운데 글자를 출력하기
    		String middle = "";
    		if (word.length()%2 == 0) {
    			int middleIndex = word.length()/2;
    			middle = word.substring(middleIndex-1,middleIndex+1);
    		} else {
    			int middleIndex = (word.length()-1)/2;
    			middle = word.substring(middleIndex, middleIndex+1);
    		}
    		
    		System.out.println(middle);
    	}
    }