为了账号安全,请及时绑定邮箱和手机立即绑定

将由于控制结构类型而导致的代码复杂性逐行计数到表视图中

将由于控制结构类型而导致的代码复杂性逐行计数到表视图中

MMTTMM 2023-08-04 14:43:14
我已经使用 netbeans IDE 使用 java swing 开发了一个桌面应用程序。其目的是衡量由于控制结构类型而导致的程序语句的复杂性。对于带有“if”、“for”、“while”和“catch”的程序语句,分别分配权重1、2、2和1。另外,为具有“n”个情况的“switch”语句的程序语句分配权重“n”。所有其他语句的权重均为零。我已经实现了上述问题的解决方案,并且我需要以表格格式演示“每个程序语句”的复杂性。为此,我使用了 jTable,其列名称为“行号”、“程序语句”和“复杂度计数”。虽然我已经计算了复杂性的总数,但我不知道如何逐行获取计数并将其显示在 jTable 中。应根据每个行号和语句显示与每个程序语句相关的复杂性计数。这是我的代码。 https://github.com/nirmaniPathiranage/Complexity-measuring-tool/blob/master/src/spm/FilesDemo.java我已经实现了从733行开始加载表数据的功能。(在 jButton11 上执行的操作)。private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton11ActionPerformed{}我期望在表视图中输出每个程序语句针对每个行号和程序语句的复杂性。我似乎无法弄清楚这一点。任何帮助,将不胜感激。
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

我在实现 jTable 来显示程序中每一行的复杂性时看到的一个可能的问题是事先不知道行数。但这也可以通过使用ArrayList<> 和TableModel的简单方法轻松解决,如下所示。


//Names of the columns

String columns[] = {"Line no","Program statement","Complexity count"};


//Table model, initiate with 0 columns

DefaultTableModel tableModel = new DefaultTableModel(columns, 0);


JTable table = new JTable(tableModel);

为了让事情更清楚,实现一个 POJO 类以在表行中显示内容将是理想的选择。


public class TableRow {

   private int lineNo;

   private String statement;

   private int cmplxCount;


   //You may implement the getters and setters as well

}

当程序迭代每一行计算复杂性时,请确保创建一个新的TableRow对象和必要的数据并将它们添加到ArrayList


ArrayList<TableRow> list = new ArrayList<TableRow>();

//Create an object each time a line is iterated for complexity calculations.

TableRow newRow = new TableRow(4,"for-loop",1);

list.add(newRow);

迭代结束后,将ArrayList中的数据添加到Object数组中,并将它们传递给jTable。


for (int i = 0; i < list.size(); i++){

   int lineNo= list.get(i).getLineNo();

   String statment = list.get(i).getStatement();

   int cmplxCount= list.get(i).getCmplxCount();


   Object[] data = {lineNo, statement , cmplxCount};

   tableModel.add(data);

}


查看完整回答
反对 回复 2023-08-04
  • 1 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信