Mathilda 2020-03-31 15:51 采纳率: 0%
浏览 284

if语句满足了但没有运行,在for循环中已经满足了循环条件,百度说上是循环里变量定义问题,然后我将循环统一改成了j,但还是有问题

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();

}

}

  • 写回答

1条回答 默认 最新

  • y_jia_feng 2020-03-31 16:24
    关注

    不会用debug么,加几个断点看看值都是多少

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序