Используя более современное решение, вы можете использовать что-то вроде этого:
import java.util.stream.IntStream;
public class Test {
public static void main(String[] args) {
int n = Integer.parseInt("10");
int sum = IntStream.range(0, n).reduce(n, (a, b) -> a + b);
System.out.println("Total is " + sum);
}
}
Очевидно, что в моем примере это не требует ввода от CLI, это просто фиксированное значение, но Я уверен, что вы поняли идею. Вы можете спросить, почему мне нравится решение по сравнению с более традиционным для l oop, просто из-за его малости и краткости, я просто нахожу, что его гораздо легче читать и поддерживать.
Не Отметим, что подобное решение знакомит вас с некоторыми понятиями, связанными с функциональным программированием, такими как неизменяемость. Хотя ребята вроде Eri c Elliott могут сделать много уроков по JavaScript, принципы можно перенести практически на любой язык! :)
Немного теории
Хотя функциональное программирование рушится, точный пример, который я привел, может быть не самым подходящим, если ваша основная цель - производительность . В этом случае лучше использовать более традиционное решение, но, учитывая, что это такое примитивное приложение / фрагмент кода, я думаю, что это нормально.
С точки зрения сложности вычислений, с точки зрения скорости и ветвления, это примерно то же самое, что и традиционное решение, однако , просто с помощью потока, не говоря уже о создании диапазона, вероятно, используя больше памяти, чем просто для l oop. Но вы могли бы также утверждать, что компилятор проделал бы такую большую работу, что он мог бы фактически реализовать это как традиционную для l oop.
С моим решением, оно выполняет 9 итераций, если вы будете использовать для l oop как тот, который предоставил @azro, то код даст 10 итераций, так что об этом тоже стоит подумать. Угадай! :)
Edit
Следует отметить, что это решение будет работать с Java 8 +.