if的条件已经满足了,然后我打印出一个6,表示有数组进入,但是却没有进入for
循环中,存储(3,() )的循环代码和存储(3,{} )的循环代码是一样的,
但却没有打印出花括号的,麻烦帮助一下xiao'bai
package by.com;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Realize {
public static File f = new File("test.txt");
public static int syn = 0; //
public static String bss = "";
public void judge() {
Map<String, Integer> map = new HashMap<String, Integer>();
try {
// 读文件
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
byte[] bs = new byte[bis.available()];
bis.read(bs);
bss = new String(bs);
System.out.println(bss);
bis.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String str1 = bss.toString();
// System.out.println( str1 );
String[] str2 = str1.split(" ");
// BUG:以空格分割可能将非保留字的字段分割在一起
// for (String string : str2) {
// System.out.println( string );
// }
// System.out.println( length );
int i;
for (i = 0; i < str2.length; i++) {
// 判断整常数
if ("1".equals(str2[i]) || "0".equals(str2[i]) || "2".equals(str2[i]) || "3".equals(str2[i])
|| "4".equals(str2[i]) || "5".equals(str2[i]) || "6".equals(str2[i]) || "7".equals(str2[i])
|| "8".equals(str2[i]) || "9".equals(str2[i])) {
map.put(str2[i], 1);
}
// 判断保留字
if ("public".equals(str2[i]) || "class".equals(str2[i]) || "void".equals(str2[i]) || "for".equals(str2[i])
|| "String".equals(str2[i]) || "private".equals(str2[i]) || "new".equals(str2[i])) {
map.put(str2[i], 2);
}
// 判断分隔符
int j=0;
if ("(".equals(str2[i])) {
for (j = i + 1; j < str2[0].length(); j++) {
boolean a=false;
if (a==(")".equals(str2[j]))) {
// System.out.println(" 括号丢失 ");
break;
} else {
map.put("()", 3);
}
}j=0;
}
if ("{".equals(str2[i])) {
System.out.println( i );
for ( j = i + 1; j < str2[0].length(); j++) {
System.out.println( j );
boolean z=true;
if (z== ("}".equals(str2[j]) ) ) {
map.put("{}", 3);
} else {
break;
}
}
}
j=0;
if ("[".equals(str2[i])) {
for (j = i + 1; j < str2[0].length(); j++) {
boolean a=true;
if (a=="]".equals(str2[j])) {
map.put("[]", 3);
} else {
break;
}
}
}
j=0;
if (";".equals(str2[i])) {
map.put(";", 3);
}
// 判断注释
if ("/".equals(str2[i])) {
for (j = i + 1; j < str2[0].length(); j++) {
if (!("/".equals(str2[j]))) {
System.out.println(" 注释符错误");
} else {
map.put("//", 3);
break;
}
}
}
j=0;
}
Set<String> keys = map.keySet();
Iterator<String> iterator = keys.iterator(); // 迭代器
while (iterator.hasNext()) {
String key = iterator.next();
int value = map.get(key);
System.out.println("( " + value + "," + key + " )");
}
}
}
后面是main函数
package by.com;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class CFAnalyze {
public static void main(String[] args) {
Realize r=new Realize();
r.judge();
}
}