【问题标题】:Making a program that prints from x to y numbers depending on what the user asks根据用户的要求制作一个从 x 打印到 y 数字的程序
【发布时间】:2026-02-12 09:55:02
【问题描述】:

抱歉,我是 Java 新手,我必须编写这个程序,它会询问用户两个数字,从这两个数字中取出可以除以 3 的间隔,然后对它们求平均值。

我只专注于让它打印所有数字,因为我试图一步一步地走。

我尝试了两件事

在第一个代码中,它要求输入两个数字,但不打印任何内容

Scanner scanner = new Scanner (System.in);

double b = scanner.nextDouble();
  
for ( double a = scanner.nextDouble() ; a <= b; a++)
{
    System.out.println(a);
}

在第二个代码中,它要求 3 个输入,如果最后一个输入等于第一个输入,它会正常打印循环,我想我可以明白为什么会发生这种情况,但我不知道如何解决它:

    Scanner scanner = new Scanner (System.in);
    
    double a = scanner.nextDouble();
    double b = scanner.nextDouble();
  
    for ( a = scanner.nextDouble() ; a <= b; a++)
    {
        System.out.println(a);
    }

【问题讨论】:

  • 我建议使用 int 而不是 double。
  • 我使用双精度数是因为某些输出可能是分数(因为它必须除以 3,然后从所有输出中取平均值)
  • 你没有说上面的分数。至于检查除以三,使用 int 比使用 double 更容易。 int i = n; if (i % 3 == 0) {...}
  • 很抱歉,我认为它不相关,我会更改它
  • 在第二个示例中,您要求输入三个数字(调用scanner.nextDouble() 三次),但您只有两个变量(a 和b)。你分配了两次。

标签: java for-loop java.util.scanner


【解决方案1】:

你需要用a的值初始化循环计数器,并让循环迭代直到b的值如下所示:

import java.util.Scanner;

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

        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int count = 0;
        double sum = 0;
        for (int i = a; i <= b; i++) {
            if (i % 3 == 0) {
                System.out.println(i);
                sum += i;
                count++;
            }
        }
        System.out.println("Average: " + sum / count);
    }
}

示例运行:

2
10
3
6
9
Average: 6.0

-或-

import java.util.Scanner;

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

        double a = scanner.nextDouble();
        double b = scanner.nextDouble();
        int count = 0;
        double sum = 0;
        for (double i = a; i <= b; i++) {
            if (i % 3 == 0) {
                System.out.println(i);
                sum += i;
                count++;
            }
        }
        System.out.println("Average: " + sum / count);
    }
}

示例运行:

2
10
3.0
6.0
9.0
Average: 6.0

【讨论】:

    最近更新 更多