Java 局部变量可能尚未初始化错误

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

我现在已经修复了它,但在我输入第一个数字后,它仍然显示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 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。这甚至不是一个真正的编程问题。