положить некоторые значения в цикле for в массиве - PullRequest
0 голосов
/ 01 июля 2019

Я фильтрую строки файла с условием 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 ]

1 голос
/ 01 июля 2019

Попробуйте использовать объект 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
0 голосов
/ 02 июля 2019

Цель состоит в том, чтобы отсканировать некоторые входные данные и в результате получить массив 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 );

Под капотомэто решение может оказаться почти таким же, как и при использовании Коллекций.Но все равно выглядит аккуратнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...