开发者社区 问答 正文

用Java将列表数组转换为数据表

有人可以提出解决方案吗?我正在尝试将列表数组转换为数据表,并将其传递给另一种方法,但是它似乎没有用。我不断收到错误消息:

banana.runtime.CucumberException:表不平衡:预期为0列,但找到1。

示例代码:-

public void test(){

 List<String> tabs = new ArrayList<String>();
        tabs.add("A");
        tabs.add("B");
        tabs.add("C");

        **DataTable allTabs = DataTable.create(tabs);
        receiveData(allTabs);**

}

public void **receiveData(DataTable data){**
 List<List<String>> tabs = tabs.asLists(String.class);
        for (int i = 1; i < tabs.size(); i++) {
            if (tabs.get(i).get(0).contains("A")) {
               System.out.println("Print A");

            }
            else if (tabs.get(i).get(0).contains("B")) {
                System.out.println("Print B");
            }
            else if (tabs.get(i).get(0).contains("C")) {
                System.out.println("Print C");
        }
}

展开
收起
垚tutu 2019-12-12 09:30:21 572 分享 版权
阿里云 AI 助理回答

从你提供的错误信息和代码片段来看,问题出在你尝试将一个简单的列表转换为DataTable时的预期列数与实际数据不匹配。DataTable通常用于表示具有结构化列和行的数据,而不仅仅是单列的简单列表。错误提示“表不平衡:预期为0列,但找到1”意味着你在创建DataTable时,系统可能期望一个没有列定义的情况(即0列),但实际上你的数据有1列。

如果你的目标是将这个字符串列表作为单列数据表传递给另一个方法,你可以直接构造一个只有一列的DataTable。这里是一个修改后的示例,展示了如何正确地创建一个单列的DataTable并传递给receiveData方法:

import io.cucumber.datatable.DataTable;
import java.util.List;
import java.util.ArrayList;

public class DataTableExample {

    public static void main(String[] args) {
        List<String> tabs = new ArrayList<>();
        tabs.add("A");
        tabs.add("B");
        tabs.add("C");

        // 明确指定列为"column1"
        DataTable allTabs = DataTable.create(tabs, new String[]{"column1"});
        receiveData(allTabs);
    }

    public static void receiveData(DataTable data) {
        // 确保按照正确的列名提取数据
        List<List<String>> tabRows = data.asLists(String.class);
        for (List<String> row : tabRows) {
            System.out.println(row.get(0)); // 假设你知道它只有一个元素
        }
    }
}

在这个修改后的版本中,我明确指定了列名("column1")来创建DataTable,这样就确保了数据表结构与数据一致。然后,在receiveData方法中,我们安全地处理这一列数据。

请确保你使用的Cucumber或任何其他测试框架版本支持这种用法,并且已经导入了必要的库。如果使用的是不同的库或框架,请根据其文档调整代码。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答