1

我正在参加赫尔辛基大学的 Java MOOC。卡在以下问题上:

编写一个程序,打印从 1 到用户给定的数字的整数。

样本输出

Where to? 3
1
2
3

下面的代码输出预期的结果,但不被接受为有效。欢迎任何建议或指点,谢谢!

    import java.util.Scanner;

    public class FromWhereToWhere {

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

        // Write your program here
        System.out.println("Where to?");
        int userInput = Integer.valueOf(scanner.nextLine());
        int start = 1;
       
        while (start <= userInput) {
            System.out.println(start);
            start++;
        }
    }    
}
4

4 回答 4

1

您没有检查用户输入是否有效,我建议从以下内容开始:

  1. 检查 userInput 是否为有效数字(包括数字字符)。
  2. 检查 userInput 是否大于或等于 1。
于 2020-09-03T11:58:13.617 回答
1

最有可能测试您的程序的系统将值填充到System.in带有空格的标准输入 ( ) 中,并假设您将使用.nextInt().

如果不是这样,请仔细检查程序说明;如果我输入-1会发生什么?0? 1985985410395831490583440958230598?美食吧?

如果它没有说,那么大概验证者不会向你抛出这些输入(如果是,向 MOOC 提供者提交一个错误,如果是这种情况,课程本身需要修复),但如果是这样,你'将不得不编码这些规则,可能。

这不应该是它,但要准确反映所需的结果,它是System.out.print("Where to? ");- note、noln和尾随空格。

于 2020-09-03T11:27:35.363 回答
0

您的答案还可以,但如果这是您的老师所期望的,则可以针对初学者水平进行优化,因为:

  1. 您可以直接从扫描仪获取 int,无需使用包装类 Integer。
  2. 你可以使用另一个循环......一个for循环
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    // Write your program here
    System.out.println("Where to?");
    int userInput = scanner.nextInt();

    System.out.println("ok!");
    for (int i = 1; i <= userInput; i++)
    {
        System.out.println(i);
    }

}
于 2020-09-03T12:03:19.703 回答
0

只需尝试删除 System.out.println("Where to?"); with System.out.print("去哪里?");

于 2020-09-03T12:10:55.053 回答