Есть ли способ отрубить массив строк в Java (без использования циклов) и преобразовать непосредственно в целое число? - PullRequest
0 голосов
/ 12 сентября 2018

Вот чего я хочу достичь.

Введите:

5
1 2 3 -4 -5 -6 -7 -8 -9

Ожидаемый результат:

The list is 1 2 3 -4 -5.
There are 3 positive numbers and 2 negative numbers.

Пример кода:

String[] s = sc.nextLine().split(" ");
for(int i=0;i<n;i++)
{
    ...
}
System.out.printf("The list is %s.\nThere are %d positive numbers and %d negative numbers",(s.toString().substring(0,n)),pos,neg);
sc.close();

Вывод:

The list is [Ljav.
There are 3 positive numbers and 2 negative numbers.

Попытался применить Integer.parseint(s.toString().substring(0,n)) с %d, но затем также получил тот же результат, что и выше. Как это исправить?

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

Вы можете использовать API Arrays.asList и stream, чтобы получить решение. Я использовал limit, чтобы ограничить количество записей до 5, как в вашем случае. Если ваше состояние меняется, вы можете использовать filter и поместить ваше условие туда. Ниже приведен небольшой фрагмент кода того, как это можно сделать

public static void main(String[] args) {
    String[] s = "1 2 3 -4 -5 -6 -7 -8 -9".split(" ");
    Arrays.asList(s).stream().limit(5).forEach(System.out::print); // filter
   // or use below to get the first five element list
   Arrays.asList(s).stream().limit(5).collect(Collectors.toList());
}
0 голосов
/ 12 сентября 2018

Вы можете попробовать манипуляции со строками.

@Test
public void stringManipulationForArray() {

    int[] intArray = {1,2,3,4,5,6,7,8};
    final String arrayAsStr = Arrays.toString(intArray);
    System.out.println(arrayAsStr );
    final String numbersWithCommas = arrayAsStr .substring(1, s.length() - 1);
    System.out.println(numbersWithCommas);
    final String numbersWithoutCommas = numbersWithCommas.replace(",", "");
    System.out.println(numbersWithoutCommas);
}
0 голосов
/ 12 сентября 2018

Попробуйте Arrays.toString(s) вместо s.toString().

Исправленный код будет выглядеть так:

String[] s = sc.nextLine().split(" ");
for(int i=0;i<n;i++)
{
    ...
}
System.out.printf("The list is %s.\nThere are %d positive numbers and %d negative numbers",(Arrays.toString(s).substring(0,n)),pos,neg);
sc.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...