我怎样才能让我的价值观不存在if陈述中?

时间:2018-11-22 16:49:56

标签: java if-statement double

我尝试制作一个非常基本的计算器,但是,如果我尝试输出计算结果,则会收到错误消息,即使我在底部的if语句中将变量“结果”初始化了,但尚未初始化。当我在if语句中放入“ System.out”行时,它起作用了,所以我一直想知道如何在我的语句中初始化变量并保留值。

但是我发现的所有线程都在谈论使用“返回”给出一个值,而不是一个变量。

import javax.swing.JOptionPane;
class Calculator{
public static void main(String[] args)
{
    double z1, z2, result;
    String input, s;

    input = JOptionPane.showInputDialog("Input a number:");

  //check whether or not the input is a number
        if(isNumber(input) == false)
        {
            JOptionPane.showMessageDialog(null, "Input a real Number", "Error",JOptionPane.ERROR_MESSAGE);
            System.exit(0);
        }

    z1 = Double.parseDouble(input);

    input = JOptionPane.showInputDialog("Input a second number:");

  //check whether or not the input is a number
        if(isNumber(input) == false)
        {
            JOptionPane.showMessageDialog(null, "Input a real number", "Error",JOptionPane.ERROR_MESSAGE);
            System.exit(0);
        }
    z2 = Double.parseDouble(input);

    s = JOptionPane.showInputDialog("Input an operation(+,-,*,/):");        

    if(s.equals("+"))
    { result = z1 + z2; }
    if(s.equals("-"))
    { result = z1 - z2; }
    if(s.equals("*"))
    { result = z1 * z2; }
    if(s.equals("/"))
    { result = z1 / z2; }

    System.out.println(result);

2 个答案:

答案 0 :(得分:3)

由于此代码:

var ms = 1000;
    var isFirstSucceed = false;
    var isSecondSucceed = true;

    var getUsersId = () => new Promise((res, rej) => {
      console.log('request getUsersId');
      setTimeout(() => {
        if (isFirstSucceed) {
          return res([1,2,3,4,5]);
        } else {
          return rej(new Error());
        }
      }, ms);
    });

    var getUserById = () => new Promise((res, rej) => {
      console.log('request getUserById');
      setTimeout(() => {
        if (isSecondSucceed) {
          return res({name: 'John'});
        } else {
          return rej(new Error());
        }
      }, ms);
    });

    getUsersId()
    .then(r => {
      console.info('1st request succeed', r);
      return getUserById();
    }, e => {
      console.error('1st request failed', e);
      return { then: function() {} };
    })
    .then(
      r => console.info('2nd request succeed', r), 
      e => {
        console.error('2nd request failed', e);
        throw e;
    });

没有最终的if(s.equals("+")) { result = z1 + z2; } if(s.equals("-")) { result = z1 - z2; } if(s.equals("*")) { result = z1 * z2; } if(s.equals("/")) { result = z1 / z2; } 语句,因此不能保证else会被初始化。
解决此问题的一种方法:

result

或在定义中:

    if (s.equals("+")) {
        result = z1 + z2;
    } else if (s.equals("-")) {
        result = z1 - z2;
    } else if (s.equals("*")) {
        result = z1 * z2;
    } else if (s.equals("/")) {
        result = z1 / z2;
    } else {
        result = 0.0;
    }

答案 1 :(得分:1)

问题是环境检查一切是否正常,并发现您有一些ifs可以初始化变量,并发现不能保证result被初始化。结果,您得到此错误。尝试在开始时对其进行初始化:

double z1, z2, result = 0;