无法从类中检索变量并遇到运行时/逻辑错误

问题描述 投票:-2回答:1

我正在尝试创建一个充当简单计算器的程序。我试图让用户输入他们想要做什么类型的计算以及他们想要计算的数字,并且只要他们愿意,他们就可以继续重复计算。

我相信我需要所有代码但是在尝试检索要计算的变量时我遇到了麻烦。当我捕获异常时,我的循环也遇到了麻烦,它在捕获时会出错。我在解决这些问题时遇到了困难。任何帮助或提示非常感谢!

import java.util.Scanner;
import java.util.InputMismatchException;

public class GetDouble {

public static double NewNumber;
public static int z=1;
public static int a=1;

static Scanner Input = new Scanner( System.in );

public static double GetDoubleNumber (double GetDouble)
{


    do {
        try{

                System.out.println("Please enter a number for the calculation.");
                double NewNumber = Input.nextDouble();

                a=2;
            }
            catch(InputMismatchException e) {
                System.out.println("Please enter a number. ");

                a=1;
            }
            }while(a==1);

    return NewNumber;

}

public static double DivideTwoNumbers (double Result, double NewNumber, double NewResult)
{

    do {
    try{
                GetDoubleNumber(NewNumber);
                NewResult = Result / NewNumber; 

                z=2;
        }
        catch(InputMismatchException e) {
            System.out.println("Please enter a number, the number can not be 0 when dividing. ");
        }
        }while(z==1);

    return NewResult;

}

}

//Driver Class
import java.util.Scanner;

public class SimpleCalculator extends GetDouble{

static Scanner Input = new Scanner( System.in );
public static double Result = 0.0;
public static double NewResult;
public static double NewNumber;
public static int y=1;
public static int z=1;


public static void main (String[] args) {

         do {

            System.out.println("Enter the type of calculation. (Examples: +, -, *, or /) ");
    String Calculation = Input.nextLine();

    do {

        switch (Calculation.charAt(0)) {

    case '+':

        GetDoubleNumber(NewNumber);
        NewResult = Result + NewNumber;

        System.out.println("New Result: " + NewResult);

        z=2;

        break;

    case '-':

        GetDoubleNumber(NewNumber);
        NewResult = Result - NewNumber;

        System.out.println("New Result: " + NewResult);

        z=2;

        break;

    case '*':

        GetDoubleNumber(NewNumber);
        NewResult = Result * NewNumber;

        System.out.println("New Result: " + NewResult);

        z=2;

        break;

    case '/':

        DivideTwoNumbers (Result, NewNumber, NewResult);
        System.out.println("New Result: " + NewResult);

        z=2;

        break;

    default:
            System.out.println("Please enter the type of calculation. (Examples: +, -, *, or /)  ");

            z=1;
        }

    }while(z==1);


              System.out.println("Enter 'Yes' to continue calculation \n "
                + "or 'Result' to see calculation result.");
         String Answer = Input.nextLine();


         if(Answer.charAt(0) == 'Y' || (Answer.charAt(0) == 'y'))
         {
            y=1;
         }
         if(Answer.charAt(0) == 'R' || (Answer.charAt(0) == 'r'))
         {
             System.out.println("Calculation result: " + Result);
             System.exit(0);
         }
         else
         {
             System.out.println("Please enter 'Yes' to continue calculation \n" 
                     + "or 'Result' to see calculation result.");

         }   


         }while(y==1);
 }
}
java eclipse
1个回答
0
投票

据我所知,你运行GetDoubleNumber有一个双返回值,但在驱动程序类中,你是在滥用它。该函数还接收double类型的参数,但您似乎没有对它执行任何操作。在驱动程序类中调用函数时,需要将结果存储在如下变量中:

double newNumber = GetDoubleNumber(NewNumber);

同样,该函数实际上并不需要任何输入参数,因此上面的内容可以简化为double newNumber = GetDoubleNumber();您必须更改函数的定义,当然也不要接受任何参数。

如果我不得不猜测,我冒昧地相信你在调用它时作为参数传递的“NewNumber”将存储结果,但事实并非如此。

© www.soinside.com 2019 - 2024. All rights reserved.