Java 局部变量可能尚未初始化错误
我现在已经修复了它,但在我输入第一个数字后,它仍然显示0。它在vikt上显示正确,但在pris上显示不正确:Java 局部变量可能尚未初始化错误,java,eclipse,Java,Eclipse,我现在已经修复了它,但在我输入第一个数字后,它仍然显示0。它在vikt上显示正确,但在pris上显示不正确: package Brev; import static javax.swing.JOptionPane.*; public class Uppgift1 { public static void main(String[] arg) { String indata = showInputDialog("Hur mycket väger ditt brev
package Brev;
import static javax.swing.JOptionPane.*;
public class Uppgift1 {
public static void main(String[] arg) {
String indata = showInputDialog("Hur mycket väger ditt brev i gram?");
int vikt = Integer.parseInt(indata);
int pris = 0;
do {
indata = showInputDialog("Ditt porto kostar " + pris + " kr med vikten " + vikt + " Gram." +
"\nSkriv in en följande vikt för att addera på ditt nuvarande porto.");
vikt = vikt + Integer.parseInt(indata);
pris = pris + pris;
if (vikt < 1) {
showMessageDialog(null, "Error");
}
else if (vikt <= 50){
showMessageDialog(null, "Portot blir "+ (pris + 7) + "Kr. med " + vikt + " Gram.");
}
else if (vikt <= 100){
showMessageDialog(null, "Portot blir "+ (pris + 14) + "Kr. med " + vikt + " Gram.");
}
else if (vikt <= 250){
showMessageDialog(null, "Portot blir "+ (pris + 28) + "Kr. med " + vikt + " Gram.");
}
else if (vikt <= 500){
showMessageDialog(null, "Portot blir "+ (pris + 42) + "Kr. med " + vikt + " Gram.");
}
else if (vikt <= 1000){
showMessageDialog(null, "Portot blir "+ (pris + 56) + "Kr. med " + vikt + " Gram.");
}
else if (vikt <= 2000){
showMessageDialog(null, "Portot blir "+ (pris + 70) + "Kr. med " + vikt + " Gram.");
}
else if (vikt > 2000)
showMessageDialog(null, "Maximalvikten är 2000GRAM / 2KG");
} while (vikt <= 2000);
}
}
package-Brev;
导入静态javax.swing.JOptionPane.*;
公开课1{
公共静态void main(字符串[]arg){
字符串indata=showInputDialog(“Hur mycket väger ditt brev i gram?”);
int vikt=Integer.parseInt(indata);
int-pris=0;
做{
indata=showInputDialog(“迪特波尔图科斯塔”+pris+“kr med vikten”+vikt+“克。”+
“\n克里夫在波尔图的新瓦朗德河上”;
vikt=vikt+Integer.parseInt(indata);
pris=pris+pris;
if(vikt<1){
showMessageDialog(空,“错误”);
}
否则,如果(vikt您正在编写看起来模棱两可的代码:
"aString" + anInt + anotherInt + "anotherString"
Java将其解释为相当于:
("aString" + anInt) + anotherInt + "anotherString"
"aString" + (anInt + anotherInt) + "anotherString"
因此,每个int
在添加之前都会转换为字符串,但您希望执行以下等效操作:
("aString" + anInt) + anotherInt + "anotherString"
"aString" + (anInt + anotherInt) + "anotherString"
所以,就用最后一种明确的方式写吧。如果你的数学公式是字符串加法的一部分,就用括号括起来。你希望pris
有什么值?你从来没有设置过值……在循环之前设置pris=0
并开始用你想要的任何值加起来。如果你不这样做pris+pris
会有问题吗总是给你零。我希望pris的值是0,六分式。Aramiti你认为这是我想要的。但是如果我写“int pris=0同样的情况也会发生。一旦设置了int pris=0;
,就不会再出现未初始化的错误。因此,该错误与您可能遇到的其他问题无关。也许您应该使用不同的标题?我已经修复了它,但在第一个数字输入和“vikt”之后,“pris”上仍然显示0是正确的。@AihamAl salehy再问一个问题then@AihamAl-salehy 0+0=0。这甚至不是一个真正的编程问题。