Java Addition Program返回值问题

时间:2017-09-06 22:54:09

标签: java

对于inputGetter()的for循环中返回的内容存在问题,新手编码器不知道还有去哪里。当我输入一个double时,它返回错误的值或根本不返回任何内容。感谢您的时间。非常感谢任何帮助(这是为了我自己的利益所以不需要急于回答,这不是为了学校。)

HasFoo

1 个答案:

答案 0 :(得分:0)

您可以尝试以下代码。基本上,我将inputGetter移动到全局范围中,并将其从函数inputGet()的范围中删除。这是因为对于一个java程序实例,你只需要一个Scanner类实例,但是之前你创建了两个它们。

import java.util.Scanner;



    public class AdditionExample {
        static Scanner inputGet;

        public static void main(String[] args) {
            inputGet = new Scanner(System.in);
            double userInput1;
            double userInput2;
            System.out.println("Please enter a double-type number. Whole integers will not be accepted.");
            userInput1 = inputGetter();
            System.out.println("Please enter another double-type number. Whole integers will not be accepted.");
            userInput2 = inputGetter();
            additionExample(userInput1, userInput2);
            inputGet.close();
        }

        public static double additionExample(double u, double i) {

            double o = u + i;
            System.out.println(o);
            return o;
        }

        public static double inputGetter() {

            boolean goodAnswer = true;
            double userInput = 0.0;

            while (goodAnswer == true) {

                if (inputGet.hasNextDouble()) {
                    userInput = inputGet.nextDouble();
                    goodAnswer = false;
                }
                else {
                    System.out.println("You done did it wrong.");
                    inputGet.next();
                    break;

                }
            }

            return userInput;

        } 

    }

注意:根据您的逻辑,您无法抵抗整数类型被接受,因为每个整数也是一个双精度型。因此,inputGet.hasNextDouble()的任何整数都将返回true。你需要提出比这更诙谐的东西:)