kuop4wn 2015-11-25 15:09 采纳率: 50%
浏览 1439
已结题

下面java代码存在哪些问题?

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

public class compiler {
static String keyword[]={"main","FILE","int","char","if","else","return","printf","scanf","void","for","while","do","continue","break","include"};
public static boolean isDigit(char ch){
if(ch>='0'||ch<='9')
return true;
else
return false;
}
public static boolean isAlpha(char ch) {
if(ch>='a'&&ch<='z'||ch>='A'&& ch<='Z')
return true;
return false;
}
public static boolean isKey(String word) {
int i= 0;
for(i=0;i<keyword.length;i++){
if(keyword[i].equals(word))
return true;
}
return false;
}
//public static boolean isBc(char ch) {
// if(ch==' ')
// return true;
// return false;
}
public static void main(String[] args) {
try {
//System.out.println("--------------");
File file = new File("F:\test.txt");
FileInputStream fis = new FileInputStream(file);
//System.out.println("--------------");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
String word;
while ((word=br.readLine())!=null) {
System.out.println("--------"+word);
StringBuilder stringBuilder = new StringBuilder();
for(int i=0;i<word.length();i++){
char token;
if(Character.isLetter(word.charAt(i))){
token=word.charAt(i);
// System.out.println("********"+token);
stringBuilder.append(token);
if(i+1<word.length()&&!Character.isLetter(word.charAt(i+1))) {
if(isKey(stringBuilder.toString())){
System.out.println("关键字:"+stringBuilder);
}
else {
System.out.println("普通标识符:"+stringBuilder);
}
stringBuilder.setLength(0);
}

}
else if ( isDigit(word.charAt(i))) {
token=word.charAt(i);
// System.out.println("********"+token);
stringBuilder.append(token);
if(i+1<word.length()&&!isDigit(word.charAt(i+1))){
System.out.println("无符号实数"+stringBuilder);
stringBuilder.setLength(0);
}
}
else{
token=word.charAt(i);
// System.out.println("********"+token);
switch (token) {
case '[':
case ']':
case '{':
case '}':
case ',':
case ':':
case ';':
case '(':
case ')':System.out.println("分界符:"+token);
break;
case'=':System.out.println("运算符:"+token);
break;
default:System.out.println("无法识别字符:"+token);
break;
}
}
}

}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}
我想实现一个简单的编译器 后面情况还没写完 但是试了一下 总是有问题 根本不能到数字和符号判断那里去 不知道哪里有错 新手求指导

  • 写回答

6条回答 默认 最新

  • devmiao 2015-11-25 15:58
    关注

    自己调试下,看看为什么没有进入

    评论

报告相同问题?

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误