有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java小程序中打印整个数组而不是单个值

这是一个电话键盘小程序

我的小程序有问题,它似乎是打印整个阵列到所选的号码,我只希望它打印所选的号码,就像在手机上拨号时发生的那样。有人能看出我哪里出错了吗?提前谢谢

 import java.awt.*;
  import java.awt.event.*;

 public class Telephone extends Frame implements ActionListener
 {
Button keys[];
Panel keypad;
TextField lcd;
Label value;
boolean  foundKey;

public Telephone()
{
    lcd =new TextField(20);
        lcd.setEditable(false);
    keypad= new Panel ();
    keys= new Button[13];



    //construct and assign captions to the buttons
    for (int i=0; i<=9; i++)
        keys[i] = new Button(String.valueOf(i));

    keys[10] =new Button ("*");
    keys[11] =new Button ("0");
    keys[12] =new Button ("#");


    setBackground(Color.magenta);
    setLayout(new BorderLayout());
    keypad.setLayout(new GridLayout(4,3,10,10));

    //add keys
    for(int i=1; i<=3; i++)//1,2,3
                keypad.add(keys[i]);

    for (int i=4; i<=6; i++)//4,5,6
                keypad.add(keys[i]);

    for (int i=7; i<=9; i++)//7,8,9
        keypad.add(keys[i]);

    keypad.add(keys[10]);
    keypad.add(keys[11]);
    keypad.add(keys[12]);

    for (int i=0; i<keys.length; i++)
        keys[i].addActionListener(this);

    //add componets to display
    add(lcd, BorderLayout.NORTH);
    add(keypad,BorderLayout.CENTER);
    //add()

    addWindowListener(

        new WindowAdapter()
                {
                    public void windowClosing(WindowEvent e)
                    {
                        System.exit(0);
                    }
                }
    );

}//constructor ends

public void actionPerformed(ActionEvent e)
{
    foundKey = false;
    for (int i=0; i<keys.length &&!foundKey;i++)
            {
                if(e.getSource() == keys[i])

            foundKey=true;
                //switch(i)
                //{
                //  case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:


                    lcd.setText(lcd.getText()+ keys[i].getLabel());
            //      break;
            //  }//end switch
            }//end for
}//end actionPerformed

    public static void main(String args[])
    {
        Telephone f = new Telephone();
        f.setTitle("Telephone Application");
        f.setBounds(50,130,250,300);
        f.setVisible(true);
    }
 }//class ends

共 (1) 个答案

  1. # 1 楼答案

    作为你的声明

     if(e.getSource() == keys[i])
    

    没有括号,只有下一条语句将有条件执行:

     foundKey=true;
    

    。但是声明

     lcd.setText(lcd.getText()+ keys[i].getLabel());
    

    将被打印,而不管if条件如何

    解决方案:学会总是在if、switch、while、for等上加括号