一、题目
int i=1;
if (i>2)
{
i=i+1;
}
else
{
i =i+2;
}
while (i>=1)
{
while (i<5)
{
i=i+1;
}
}
print i;
流程图
源码
```java
1.Read.class(读取文件)
package bianyi;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Read {
public static String buffer = null;
public void methodRead() throws IOException {
BufferedReader br = new BufferedReader(
new FileReader("C:\\Users\\syj" +
"\\IdeaProjects\\day04-code\\code\\src\\bianyi\\yuan.txt")
);
String str;
while ((str=br.readLine())!=null)
{
if (buffer==null)
{
buffer=str;
}
else
{
buffer+=str;
}
buffer+='\n';
}
br.close();
}
}
2.JudgeWord.class(判断是否为保留字)
package bianyi;
public class JudgeWord {
public static String[] word = {"int","if","else","while","print"};
public int isWord(String s)
{
int flag = -1;
for (int i = 0; i < word.length; i++) {
if(word[i].equals(s))
{
flag = i +1;
break;
}
}
return flag;
}
}
3.JudgeRelate.class(判断是否为关系运算符)
package bianyi;
public class JudgeRelate {
public static String[] relation = {">=", ">", "<", "="};
public int isRelate(String s) {
int flag = 0;
for (int i = 0; i < relation.length; i++) {
if (relation[i].equals(s)) {
flag = i + 8;
break;
}
}
return flag;
}
}
4.JudgeOperate.class(判断是否为算术运算符)
package bianyi;
public class JudgeOperate {
public static String[] op = {"+","-"};
public int isOperate(String s)
{
int flag = 0;
for (int i = 0; i < op.length; i++) {
if(op[i].equals(s))
{
flag = i +6;
break;
}
}
return flag;
}
}
5.JudgeLimit.class(判断是否为边界符)
package bianyi;
public class JudgeLimit {
public static String[] limit = {"{","}","(",")",";"};
public int isLimit(String s)
{
int flag = 0;
for (int i = 0; i < limit.length; i++) {
if(limit[i].equals(s))
{
flag = i + 12;
break;
}
}
return flag;
}
}
6.Analyse.class(分析)
package bianyi;
public class Analyse {
public static int typeNum = 0;
JudgeWord judgeWord = new JudgeWord();
public int methodAnalyse(int m,String s)
{
int num = 0;
boolean flag = true;
if ((judgeWord.isWord(s))>=0)
{
num = judgeWord.isWord(s);
typeNum = 1;
}
else
{
for (int i = 0; i < s.length(); i++) {
if ((s.substring(i,i+1).compareTo("0")>=0)&&
(s.substring(i,i+1).compareTo("9"))<=0)
{
flag = true;
}
else
{
flag = false;
break;
}
}
if (flag)
{
num = 17;
typeNum = 5;
}
else
{
num = 18;
typeNum = 6;
}
}
return num;
}
}
7.MainClass.class(主函数)
package bianyi;
import Java02.jinjie.Buffer.BufferOutputStream;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
public class MainClass {
public static String[] type ={"无","关键字","算数符号",
"关系运算符","分界符","数字","标识符"};
public static void main(String[] args) throws IOException {
Read read = new Read();
JudgeWord judgeWord = new JudgeWord();
JudgeLimit judgeLimit = new JudgeLimit();
JudgeOperate judgeOperate = new JudgeOperate();
JudgeRelate judgeRelate = new JudgeRelate();
Analyse analyse = new Analyse();
read.methodRead();
int k = 0 ,typeNum1 = 0 , num = 0 , sign = 0;
String Str1=null;
boolean flag1 = true , flag2 = false;
do {
flag2 = false;
// 存储读到的字符串
Str1 = null;
// 种别码
num = 0;
while ((!(read.buffer.substring(k,k+1).equals("")))&&
(!(read.buffer.substring(k,k+1).equals("\n"))))
{
// 分界符
if (judgeLimit.isLimit(read.buffer.substring(k,k+1))>0)
{
typeNum1 = 4;
num = judgeLimit.isLimit(read.buffer.substring(k,k+1));
break;
}
// operate
if (judgeOperate.isOperate(read.buffer.substring(k,k+1))>0)
{
typeNum1 = 2;
num = judgeOperate.isOperate(read.buffer.substring(k,k+1));
break;
}
// relation
if (judgeRelate.isRelate(read.buffer.substring(k,k+1))>0)
{
typeNum1 = 3;
if (judgeRelate.isRelate(read.buffer.substring(k,k+2))>0)
{
flag2 = true;
num = judgeRelate.isRelate(read.buffer.substring(k,k+2));
}
else
{
num = judgeRelate.isRelate(read.buffer.substring(k,k+1));
}
break;
}
if (Str1 == null)
{
Str1 = read.buffer.substring(k,k+1);
}
else
{
Str1 += read.buffer.substring(k,k+1);
}
k++;
}
if (Str1 != null)
{
sign = analyse.methodAnalyse(k,Str1);
System.out.printf("<"+sign+","+Str1+">");
System.out.printf("\n");
}
if (num>0)
{
if(flag2)
{
System.out.printf("<"+num+","+ read.buffer.substring(k,k+2)+">");
System.out.printf("\n");
k++;
}
else
{
System.out.printf("<"+num+","+ read.buffer.substring(k,k+1)+">");
System.out.printf("\n");
}
}
k++;
}while (flag1);
System.out.printf("<0,end>");
}
}
结果展示
![在这里插入图片描述](https://img-blog.csdnimg.cn/cc750d753c5f4b28a70d09a891a09a7a.png)
**想要源码可以在下面评论,无偿分享**