将一些值放在数组的for循环中

时间:2019-07-01 18:59:04

标签: java

我正在使用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);
     }
}

2 个答案:

答案 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的解决方案几乎相同。但是看起来仍然很整洁。