从用户那里获取一个整数并找到平方根后,我需要找到从 i 到 0 的每个数字的平方根。我很难弄清楚如何正确地递减输入,以便打印出每个数字的平方根新行中的编号。如果我的标题不够具体,我深表歉意,我在尝试描述这个问题时遇到了困难。
public class Number {
public static void main(String[] args) {
int i = 1;
Scanner scnr = new Scanner(System.in);
System.out.print("Please enter a number: ");
while (i >= 1)
{
i = scnr.nextInt();
System.out.println(Math.sqrt(i));
i++;
}
System.out.println(i);
}
如果您习惯使用 Java 8 流,那么您将能够以更直接的方式执行此操作,而无需传统的
for
循环:
IntStream.range(0, scanner.nextInt())
.map(Math::sqrt).forEach(System.out::println);
如果您不熟悉流,则此语句可以解释为“创建从 0 到输入数字的整数流;将这些整数中的每一个映射到其自己的平方根;打印流中的每个数字”。
虽然语法看起来有点棘手,但值得习惯使用它。
在循环内递减 i
int i = 0;
Scanner scnr = new Scanner(System.in);
System.out.print("Please enter a number: ");
i = scnr.nextInt();
while (i >= 1)
{
System.out.println(Math.sqrt(i));
i--;
}
在循环之前获取用户输入,并递减变量,i--
。真正的解决方案不仅仅是发布代码并期望它能够工作,而是您应该在脑海中或在纸上浏览代码,在其发生时思考其步骤。还要研究 Java 运算符,尤其是
++
和 --
运算符,并充分理解它们的操作。您可以使用函数接口:::
Function<Double,Double> sqrtFunction = (Double x) -> Math.sqrt(x);
double squareRoot = sqrtFunction.apply(number);
System.out.println("Square root of"+number+"is:"+squareRoot);