Java,简单的控制台计算器有什么问题

-2 java console calculator

我试图在java中编写一个简单的计算器,因为我想学习这门语言.但我无法计算"C"变量.请帮忙.怎么了?

    import java.util.*;

//Simple calculator

public class calc
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        double a, b, c;

        System.out.print("Write first number");
        a = in.nextDouble();
        System.out.print("and write second");
        b = in.nextDouble();
        System.out.print("Choose the operation   1.Addition  2.Subtraction   >Please write the number of operation ");
        double somethin = in.nextDouble();
        int addition = 1;
        int subtraction = 2;
        if (somethin >= addition) 
        {
        c = a + b; 
        }
        else if (somethin >= subtraction)
        {
        c = a - b;
        }
        {
        System.out.println(c); 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Lui*_*oza 6

看起来错误是代码总是落在addition条件中,因为您正在比较最后一个输入值是大于还是等于加法.

if (somethin >= addition) 
{
    c = a + b; 
}
else if (somethin >= subtraction)
{
    c = a - b;
}
Run Code Online (Sandbox Code Playgroud)

因此,如果somethin> = 1将进行添加.当您的输入为2时,它将进行检查2 >= 1,因此它将属于添加规则.

将您的代码更改为

if (somethin == addition) 
{
    c = a + b; 
}
else if (somethin == subtraction)
{
    c = a - b;
}
Run Code Online (Sandbox Code Playgroud)

此外,您应该使用int变量而不是double这种情况.

//double somethin = in.nextDouble();
int somethin = in.nextInt();
Run Code Online (Sandbox Code Playgroud)

如在matt forsythe的回答中所述,您必须声明变量并在使用之前对其进行初始化.在你的代码中,你有这个:

double a, b, c; //declaring the variables
//...
if (somethin == addition) 
{
    c = a + b; 
}
else if (somethin == subtraction)
{
    c = a - b;
}
System.out.println(c); //c it's declared but hasn't been initialized =\
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,你应该在行中c使用它之前初始化变量值System.out.println(c).要解决它,您可以在if评估之前给它一个值:

c = 0;
if (somethin == addition) 
//rest of the code...
Run Code Online (Sandbox Code Playgroud)