java - 当我打印一个字符串值来控制台时,它会打印,但是当我尝试将此字符串放入双字符串数组时,它返回空

标签 java arrays string doc

我正在尝试使用java读取doc文件并尝试从文件中提取表值。我可以读取该文件,并且可以一一打印表值,但是当我尝试将这些表值分配给 2D 字符串数组时,它会为表中的某些值放置空字符串。

这是代码。

Table table=range.getTable(tablePar);
TableRow row1=table.getRow(0);
int a = table.numRows();
int b = row1.numCells();
String  atable[][] = new String[a][b];

for(int rowIdx=0;rowIdx<table.numRows();rowIdx++)
{
    TableRow row=table.getRow(rowIdx);
    System.out.println("row "+(rowIdx+1)+",is table header: "+row.isTableHeader());
    for(int colIdx=0;colIdx<row.numCells();colIdx++)
    {
        TableCell cell=row.getCell(colIdx);
        System.out.println("column "+(colIdx+1)+",text= "+cell.getParagraph(0).text());
        String toWrite = cell.getParagraph(0).text();
        System.out.println("toWrite: " + toWrite);                    
        atable[rowIdx][colIdx] = toWrite;
        System.out.println("atable: " + atable[rowIdx][colIdx] + "  "+ rowIdx+  "x" + colIdx);

    }
}
System.out.println("******************************************************************");
for(int i = 0; i<a; i++)
{
    for(int j = 0; j<b; j++)
    {
        System.out.print(atable[i][j]+ "    ");
    }
    System.out.println("");
}

这是示例输出:

row 1,is table header: false
column 1,text= Institution
toWrite: Institution
atable: Institution  0x0
column 2,text= Middle East Technical University
toWrite: Middle East Technical University
atable: Middle East Technical University  0x1
row 2,is table header: false
column 1,text=  Date:   from (month / year):
toWrite:    Date:   from (month / year):
  1x0

可以看出,它正确打印了单元格值,它打印了从单元格获取的字符串值,但没有将该字符串分配给字符串数组。 该问题仅出现在字符串“日期:来自(月/年):”

此外,当我尝试此 atable[rowIdx][colIdx] = "日期:来自(月/年):"; 它工作得很好。

最佳答案

Java只有one-dimensional arrays 。所以如果你想要一个 two-dimensional array ,您需要创建一个数组的数组,并为每一行声明一个新数组

所以,大致是这样的:

String[][] cells = new String[table.numRows()][]);
for (int x=0; x<table.numRows(); x++) {
    cells[x] = new String[table.numCols()];
    for(int y=0; y<table.numCols(); y++) {
        // code goes here
    }
}

Java 中的数组有点麻烦,如果可以的话最好避免。

关于java - 当我打印一个字符串值来控制台时,它会打印,但是当我尝试将此字符串放入双字符串数组时,它返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48856325/

相关文章:

java - JFace Treeviewer 添加新的根元素

java - 带过滤器的IntStream迭代函数

groovy - Groovy中此String数组的性能如何?

javascript - 将 HTML 元素转换为数组并处理 null

php - 在 PHP 数组中搜索部分字符串?搜索值包含主题标签

c - 字符串的奇怪错误

java - 将数据从文件导入到具有 5 个节点的 Cassandra 集群会导致 BusyConnectionException

java - 检查数字是否太大或不是数字

ruby - 如何替换字符串开头不包含字母的单词?

c - strstr() 在同一行中搜索两个不同的字符串