Предположим, у меня есть массив String args[] с определенным количеством элементов.
Допустим, до args[100]. Я хочу напечатать все элементы args[] выше args[5]. Я не хочу делать System.out.println(args[6] + args[7] + args[8] + args[9] + args[10]); и т. Д. И т. Д. Мне было интересно, есть ли более чистый и эффективный способ распечатать все эти элементы массива.
Благодарю.

2
vPrototype 17 Янв 2021 в 01:58

4 ответа

Лучший ответ

Вы можете использовать простой for-loop:

for(int i = 6; i < args.length; i++) System.out.print(args[i]);
1
Majed Badawi 16 Янв 2021 в 23:00

Вам нужна петля.

В вашем случае, предполагая современный JDK, я бы использовал поток и лямбды:

Arrays.stream(arr)
  .skip(5)
  .forEach(System.out::println);

Цикл for, вероятно, самый распространенный, конечно, в старых кодовых базах без лямбд и потоковой передачи:

    for(int i = 5; i< arr.length; i++) {
        System.out.println(arr[i]);
    }
1
DaFoot 16 Янв 2021 в 23:19

Вы можете сделать это со всеми типами циклов, просто подумайте о том, чтобы инициализировать вашу текущую переменную значением, с которого вы хотите начать.

while-loop

// Initialize i with the value you want to start
int i = 6;

while(i<args.length){
   System.out.print(args[i]);
   i++;
}

do-while

int i = 5;
do{
   i++;
   System.out.print(args[i]);
}while(i < args.length)

for-loop

for(int i = 6;i < args.length; i++){
   System.out.print(args[i])
}
0
Alex 16 Янв 2021 в 23:10

Вы можете использовать IntStream#range, как показано ниже:

IntStream.range(5, arr.length).forEach(i -> System.out.print(arr[i]));

<Сильные> Демо:

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        String arr[] = { "a", "b", "c", "d", "e", "f", "g" };
        IntStream.range(2, arr.length).forEach(i -> System.out.print(arr[i]));
    }
}

Вывод:

cdefg
0
Live and Let Live 16 Янв 2021 в 23:43
65755606