java - 对所有 for 循环参数使用扫描仪输入

标签 java for-loop java.util.scanner

看看这段代码?

import java.util.Scanner;

public class CountingMachineRevisited {
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    int from, to, by;
    System.out.print("Count from: ");
    from = scan.nextInt();
    System.out.println("Count to: ");
    to = scan.nextInt();
    System.out.println("Count by: ");
    by = scan.nextInt();

    for (int i = from; i <= to; i+=by) {
        System.out.println(i);
    }

}
}

这段代码按照我想要的方式工作,但是如果我将 for 循环的终止条件更改为 i == to,它就不起作用。

for (int i = from; i == to; i+=by) {
        System.out.println(i);
}

我理解这是所有 int 默认为 0 使得终止与初始相同,因此 for 循环将停止,但是如果我在循环开始之前初始化新值,为什么它不起作用?

最佳答案

for 中的条件循环不是终止条件。这是一个延续条件。

一个for循环如下:

for ( INITIALIZATION; CONDITION; UPDATE )
    STATEMENT

相当于

INITIALIZATION
while ( CONDITION ) {
    STATEMENT
    UPDATE
}

因此,只要条件为真,循环就会继续,而不会在条件为真时终止。

所以当你输入 to这比你的 from 还要大,但放入条件 i == to ,自 i初始化为from ,和fromto 不同,该条件不会为真,因此循环无法运行 - 它仅在为真时运行。

i <= to有效是因为 i从低于 to 的值开始,所以这个条件一直成立,直到 i的值超过to .

关于java - 对所有 for 循环参数使用扫描仪输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32426625/

相关文章:

java - 将星号转换为粗体或斜体标签

java - Struts2 :checkbox - unwanted input type hidden

java - 在 Hibernate 3 中使用存储过程

javascript - 比较 2 个数组以输出总整数

Python for 循环在迭代 CSV 行时不合理地中途停止

java - 使用 Scanner 读取 utf-8

java - 从类中某处声明的字符串变量中提取字符串资源?

c - for 循环接受比循环条件多一个值

java - 无法修改扫描仪的输出不可读

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?