Я только начал изучать Java. задача состоит в том, чтобы создать метод, который ведет отсчет от значения, заданного пользователем. Скорость увеличения и конечное значение также задаются пользователем. Поскольку я действительно не знаю, как это сформулировать, вот пример:
Пример:
Вход: Начальное значение (1), увеличение (2), конечное значение (10)
выход :
1,3,5,7,9
Что мне нужно указать в качестве возврата, чтобы класс отображал все подсчитанные числа (как в приведенном выше примере)?
import java.util.Scanner;
public class ForSchleifeÜbungen2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Bitte Startwert eingeben:");
long Startwert = sc.nextLong();
System.out.println("Bitte Schrittweite eingeben:");
long Schrittweite = sc.nextLong();
System.out.println("Bitte Endwert eingeben:");
long Endwert = sc.nextLong();
System.out.println("Ihr Startwert: " + Startwert);
System.out.println("Ihr Schrittweite: " + Schrittweite);
System.out.println("Ihr Endwert: " + Endwert);
System.out.println(Schrittzähler(Startwert, Schrittweite, Endwert));
}
public static long Schrittzähler (long Startwert, long Schrittweite, long Endwert) {
long Zähler;
for(long i = Startwert; i <= Endwert; i = i + Schrittweite) {
System.out.println(i);
}
long Zähler;
}
}
Вместо того, чтобы печатать числа, просто добавьте их в строку, а затем верните строку. Также long Zähler; ничего не делает и ставишь 2 раза.




Создайте переменную с именем sum и присвойте ей начальное значение 0
long sum = 0; // I guess this is Zähler
На каждой итерации добавляйте текущее значение i к сумме вида:
sum = sum + i; // alternatively sum += i;
Возвратите сумму в конце метода Schrittzähler.
Подсказка: по соглашению все переменные Java записываются в camelCase, начиная с маленькой буквы (а не с заглавной). То же самое применимо к таким членам класса, как методы и поля. Документ Java
Что произвольный о начальном значении?
@khelwood мой английский ничуть не лучше OP :)
OK. Ну, начальное значение для переменной суммы должно быть нулевым, чтобы вы могли получить правильный ответ. Так что это не произвольно.
Я изменил его на нейтральный, поскольку я имею в виду, что исходное значение не должно иметь никаких побочных эффектов. В случае суммирования это 0, но при умножении, например, нейтральное значение равно 1.
Используйте объект StringBuilder, чтобы построить строку чисел для отображения. Я взял на себя смелость изменить имена методов, переменных и параметров, чтобы они начинались с нижнего регистра.
public static String schrittzähler(long startwert, long schrittweite, long endwert) {
StringBuilder builder = new StringBuilder(Long.toString(startwert));
for(long i = startwert + schrittweite; i <= endwert; i = i + schrittweite) {
builder.append(", ");
builder.append(i);
}
return builder.toString();
}
вы уже сделали это, внесите здесь небольшие изменения. вам не нужно возвращаться, так как ваше требование - просто распечатать числа, поэтому замените это
System.out.println(Schrittzähler(Startwert, Schrittweite, Endwert));
с участием
Schrittzähler(Startwert, Schrittweite, Endwert)
и измените подпись метода следующим образом и удалите long Zähler;, это не нужно
public static void Schrittzähler (long Startwert, long Schrittweite, long Endwert) {
for(long i = Startwert; i <= Endwert; i = i + Schrittweite) {
System.out.println(i + ",");
}
}
Вход :
1, 2, 10
выход:
1,3,5,7,9,
Спасибо, это именно то, что я искал.
Это можно сделать более красноречиво, однако я считаю, что именно это вы и ищете. Дайте мне знать, если вам понадобится дополнительная помощь! В приведенном ниже коде должно быть все, что вы понимаете как новый программист на Java. Вот почему я выбрал это решение.
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(returnNums(1,2,10));
}
public static String returnNums(int startNum, int increaseByNum, int endNum){
String loopedNums = Integer.toString(startNum);
while((startNum+increaseByNum) < endNum) {
startNum = startNum + increaseByNum;
loopedNums += Integer.toString(startNum)+"";
}
return loopedNums;
}
}
Можете ли вы объяснить, что должен делать этот метод на английском языке, и что и что он должен возвращать? Не похоже, что метод должен что-либо возвращать, поэтому я бы оценил возвращаемый тип
voidи не пытался распечатать его, поскольку он уже печатается.