【问题标题】:Java – repeating a method from user-inputJava – 从用户输入重复一个方法
【发布时间】:2018-10-29 02:12:37
【问题描述】:

我想编写一个程序来记录公交车晚点的次数。

因此要求用户输入一个 int 值,表示迟到了多少分钟。

一旦输入负整数,程序应该停止。

我遇到的问题是让程序仅对 0 或更多的输入重复。

无论输入什么int,程序都会重复。

我做了如下的事情:

import java.util.Scanner;

public class LateBus {

    public static void main(String[] args) {
        int enter_minutes = enterMinutes();
        loop(enter_minutes);
    }

    public static int enterMinutes() {
        Scanner enter = new Scanner(System.in);
        System.out.print("How many minutes late was the bus? ");

        int late = enter.nextInt();
        return late;
    }

    public static void loop(int a) {
        while (a >= 0) {
            enterMinutes();
        }
    }

}

【问题讨论】:

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


    【解决方案1】:

    我们来看看这个函数:

    public static void loop(int a) {
        while (a >= 0) {
            enterMinutes();
        }
    }
    

    a 的值永远不会改变。 a >= 0 将始终为真或从不为真,具体取决于a 的初始值。由于a 在此函数内部使用,因此不应将其作为参数传递。你应该确保改变它:

    public static void loop() {
        int a = enterMinutes();
        while (a >= 0) {
            a = enterMinutes();
        }
    }
    

    现在你像这样调用函数:

    public static void main(String[] args) {
        loop();
    }
    

    注意:

    每个人在编写代码时都会犯逻辑错误。要找到它们,您需要学习如何调试。我建议您阅读https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ 以了解有关如何调试代码的一些提示,以便您自己发现这些类型的问题。

    【讨论】:

      【解决方案2】:

      a 为负数时,while 循环将停止,但您不更改其值。
      这样做

      while (a >= 0) {
          a = enterMinutes();
      }
      

      现在值更改为用户输入的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-18
        • 2012-06-28
        • 2016-02-17
        • 1970-01-01
        • 1970-01-01
        • 2018-03-10
        • 2018-01-20
        相关资源
        最近更新 更多