我正在使用if条件过滤文件行,我需要创建一个仅包含满足条件的值的新数组。
我可以在控制台中获取它们,但是我不知道如何将它们分配给表,有人可以帮我吗?
String section_title;
for (int j=11; j<row_num; j++)
{
Row row = (Row) rowIterator.next();
Cell s0 = sheet.getRow(j-1).getCell(0);
if(s0.toString()!="" )
{
section_title = s0.toString();
d = j-1;
System.out.println(d);
}
}
答案 0 :(得分:1)
考虑使用arraylist对象保存这些值。
它看起来像这样:
String section_title;
ArrayList<int> list = new ArrayList<int>(); // instanciate the array list
for (int j=11; j<row_num; j++)
{
Row row = (Row) rowIterator.next();
Cell s0 = sheet.getRow(j-1).getCell(0);
if(s0.toString()!="" )
{
section_title = s0.toString();
d = j-1;
list.add(d); // Add d to the list
}
}
System.out.println(list); // Print the final list
答案 1 :(得分:0)
目标是扫描一些输入并得到一个int数组。 由于我们不知道该数组的最终条目数,因此应为此使用长度可变的内容。通常,这将是某种类型的List,但是List不是为int(或其他原语)定义的,仅为像Integer这样的对象类型定义的。因此,我们需要在收集数字之后进行转换。
从Java 8开始,我们有了Streams,有了它,就可以更直接地解决问题:
String section_title;
var builder = IntStream.builder();
for( var j = 11; j < row_num; ++j )
{
var row = (Row) rowIterator.next();
Cell s0 = sheet.getRow( j - 1 ).getCell( 0 );
if( !s0.toString().isEmpty() )
{
section_title = s0.toString();
builder.add( Integer.valueOf( j - 1 ) );
}
}
var array = builder.build().toArray();
System.out.println( array );
在后台,此解决方案可能最终与使用Collections的解决方案几乎相同。但是看起来仍然很整洁。