24 시간 제 시간 을 12 시간 제로 바 꾸 고 사용자 정의 이상 처리 와 간단 한 정규 표현 식 을 연습 합 니 다.

3756 단어 정규 표현 식
이상 처리 에 있어 서 는 좀 더 강화 하고 개선 해 야 하 며, 다음 단 계 는 정규 표현 식 에 대한 사용 을 강화 해 야 한다.
package com.cn.tibco.time;

import java.util.Scanner;

public class GetTime {
	public static void main(String args[]) {
		GetTime getTime = new GetTime();
		boolean ison = true;
		while (ison) {
			getTime.resetTime();
			System.out.println("Again?(y/n)");
			Scanner keyboard = new Scanner(System.in);
			String yn = keyboard.next();
			if (yn.equalsIgnoreCase("n")) {
				ison = false;
			}
		}
	}

	public void resetTime() {
		System.out.println("Enter time in 24-hour notation:");
		Scanner keyboard = new Scanner(System.in);
		String time = keyboard.nextLine();
		System.out.println("That is the same as");
		try {
			isFormat(time);
			int hours = getHours(time);
			int minutes = getMinutes(time);
			if (hours > 12 && minutes >9) {
				String h1 = Integer.valueOf(hours - 12).toString();			
				time = h1 + ":" + getMinutes(time) ;
				System.out.println(time + " pm");
			} else if ( hours > 12 && minutes <10) {
				String h1 = Integer.valueOf(hours - 12).toString();			
				time = h1 + ":0" + getMinutes(time) ;
				System.out.println(time + " pm");
			}else {
				System.out.println(time + " am");
			}

		} catch (TimeFormatException e) {
			e.printStackTrace();
			resetTime();
		}
	}

//      ,             。
	public void isFormat(String time) throws TimeFormatException {
        
		if(!time.contains(":")){
			throw new TimeFormatException("There is no such time as " + time);
		}
		int hours = getHours(time);
		int minutes = getMinutes(time);
		if (hours < 0 || hours > 24) {
			throw new TimeFormatException("There is no such time as " + time);
		} else if (minutes < 0 || minutes > 59) {
			throw new TimeFormatException("There is no such time as " + time);
		}
	}
//     
	public int getHours(String time) {
		int pos;
		pos = time.indexOf(":");
		int hours = Integer.parseInt(time.substring(0, pos));
		return hours;
	}
//     
	public int getMinutes(String time) {
		int pos;
		pos = time.indexOf(":");
		int minutes = Integer.parseInt(time.substring(pos + 1));
		return minutes;
	}
}

이상 처리 클래스
package com.cn.tibco.time;

public class TimeFormatException extends Exception {
	
	public TimeFormatException(){
		super();
	}
	
	public TimeFormatException(String message){
		super(message);
	}


	@Override
	public String getMessage() {
		return super.getMessage();
	}
}

/ / 정규 표현 식 을 사용 하여 방법 isFormat () 을 수정 합 니 다. 코드 는 다음 과 같 습 니 다.
public void isFormat(String time) throws TimeFormatException {
        
		if(!time.matches("\\d{1,2}\\:\\d{2}")){
			throw new TimeFormatException("There is no such time as " + time);
		}
		int hours = getHours(time);
		int minutes = getMinutes(time);
		if (hours < 0 || hours > 24) {
			throw new TimeFormatException("There is no such time as " + time);
		} else if (minutes < 0 || minutes > 59) {
			throw new TimeFormatException("There is no such time as " + time);
		}
	}

좋은 웹페이지 즐겨찾기