0

我一直很难做到这一点,我一直在寻找关于如何编码的想法,但我仍然是一个初学者。这是我的源代码。也许你会读到我的想法。它运行得并不如它应该的那样好。

import javax.swing.JOptionPane;
public class sto
{
    public static void main(String args[])
    {
        char s;
        do
        {
            int pcod=0, qua;
            int[] cod={101, 102, 103, 104, 105, 106, 107, 108, 109, 110};
            double[] pri={1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 0.1};
            double [] sal=new double[10];
            String[] pro={"q", "w", "e", "r", "t", "y", "u", "i", "o", "p"};
            do
            {
                if(pcod>=101||pcod<=110)
                {
                    pcod=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter Product Code:"));
                    for(int i=0;i<10;i++)
                    {
                        if(pcod==cod[i])
                        {
                            qua=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter quantity:"));
                            sal[i]=pri[i]*qua;
                            JOptionPane.showMessageDialog(null,"You bought:\n"+pro[i]+"......"+pri[i]+" Pesos x"+qua);
                        }
                    }
                }
                else
                if(pcod<=101||pcod>=110)
                    JOptionPane.showMessageDialog(null,"INVALID PRODUCT CODE");
                    //some codes here to make you return to enter a product code again.
            }while(pcod!=00);
            for(int d=0;d<10;d++)
                sal[d]=qua;
            JOptionPane.showMessageDialog(null,"Total sales.........."+sal[d]+" Pesos");
            s=JOptionPane.showInputDialog(null,"Shop Again?(Y/N)").charAt(0);
        }
        while(s=='y');
    }
}
4

2 回答 2

0

我认为你的

if(pcod>=101|| pcod<=110)

错了,如果你希望 pcod 介于 101 和 110 之间,你会想要使用 &&。

看起来您在进入循环之前从未将 pcod 设置为除零之外的任何其他值?它是否正确?:)

干杯。

于 2013-10-07T05:43:31.500 回答
0
// .. the problem is in the next few lines
for(int d=0;d<10;d++)
    sal[d]=qua;
JOptionPane.showMessageDialog(null,"Total sales.........."+sal[d]+" Pesos");

没有括号,for循环只包括下一个缩进的代码行。该属性在循环语句d内定义,并且在循环之外失去焦点(不能在选项窗格中引用/使用)。for

要修复它,请将两条线放在{}周围(一组括号包含两条线)。

这导致了下一个问题。

int pcod=0, qua;

在这一点上,pcod0qua没有任何价值。编译器会发出警告,might not have been initialized. 快速修复是给它一个默认值,但这可能不适合应用程序的逻辑。特别是在将输入解析为int值时抛出异常时。

于 2013-10-07T06:10:29.527 回答