我尝试制作一个非常基本的计算器,但是,如果我尝试输出计算结果,则会收到错误消息,即使我在底部的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);
答案 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;