编译原理小试之编程实现有穷自动机

老师给的任务,将以下有穷自动机编程实现:(比较简单,主要是练手)
编译原理小试之编程实现有穷自动机_第1张图片这里现将letter理解为大小写字母,digit理解为数字0-9,编程实现如下:

需要注意的是怎样持续将控制台输入读取以及字符串与数组之间的转换
import java.io.IOException;
import java.util.Scanner;

public class bianyi {
	public static void main(String[] args) throws IOException {
		System.out.println("Enter your value:");//提醒输入
		Scanner sc = new Scanner(System.in);//获取控制台输入
		String str = null;//存储读取到的字符串
		byte[] buf;//将字符串转成字符数组存储在此
		while (sc.hasNext()) {//持续读入	
			str = sc.nextLine();
			buf = str.getBytes();
			if (buf.length == 0)//判断是否为空
				System.err.println("The input can not be null");
			else {
				if (!isLetter(buf[0]))//判断是否以字母开头
					System.err.println("The input should begin with a letter");
				else {
					for (int i = 1; i < buf.length; i++) {//判断后续是否是字幕与数字的结合
						if (!isLetter(buf[i]) && !isDigit(buf[i]))
							System.err.println("Error");
					}
					System.out.println("This is right!");
				}
			}
		}
	}

	private static boolean isDigit(byte b) {//判断是否是数字,以ASCII为比较标准
		// TODO Auto-generated method stub
		boolean t;
		t = (47 < b && b < 58);
		return t;
	}

	private static boolean isLetter(byte b) {//判断是否是字母,以ASCII为比较标准
		// TODO Auto-generated method stub
		boolean t;
		t = ((96 < b && b < 123) | (64 < b && b < 91));
		return t;
	}

}

这是刚开始学习时自己写的方法,后续会更新更好的方法

你可能感兴趣的:(java,编程语言)