标题:[求助]switch 语句为什么不能用?
只看楼主
★王者至尊★
Rank: 1
等 级:新手上路
帖 子:528
专家分:0
注 册:2006-3-28
 问题点数:0 回复次数:6 
[求助]switch 语句为什么不能用?
以下代码实现简易计算器 ,为什么使用中间的switch语句(被我注释了)编译不能通过 ,而换用 if嵌套 可以实现
请教..........................................
----------------------------------------------------------------------------------------------------------------

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Minicalc{
public static void main(String[] args){
JFrame frame=new JFrame("简易计算器");
Container pane=frame.getContentPane();
JTextField firstnumber=new JTextField(10);
JTextField secondnumber=new JTextField(10);
JTextField result=new JTextField(10);
JButton addButton=new JButton("+");
JButton subButton=new JButton("-");
JButton mulButton=new JButton("*");
JButton divButton=new JButton("/");
pane.setLayout(new GridLayout(5,2));
pane.add(new JLabel("Enter a number"));
pane.add(firstnumber);
pane.add(new JLabel("Enter a number"));
pane.add(secondnumber);
pane.add(new JLabel("Result"));
pane.add(result);
pane.add(addButton);
pane.add(subButton);
pane.add(mulButton);
pane.add(divButton);

DoMath listener=new DoMath(firstnumber,secondnumber,result);
addButton.addActionListener(listener);
subButton.addActionListener(listener);
mulButton.addActionListener(listener);
divButton.addActionListener(listener);
frame.pack();
frame.show();

}

}
class DoMath implements ActionListener{
private JTextField inputone,inputtwo,output;
//private JButton F;
DoMath(JTextField first,JTextField second,JTextField result){
inputone=first;
inputtwo=second;
output=result;
}
public void actionPerformed(ActionEvent e){
double first,second;
first=Double.parseDouble(inputone.getText().trim());
second=Double.parseDouble(inputtwo.getText().trim());


/* switch(e.getActionCommand().equals(F)){

case '+' :output.setText(String.valueOf(first+second));break;
case '-' :output.setText(String.valueOf(first-second));break;
case '*' :output.setText(String.valueOf(first*second));break;
case '/' :output.setText(String.valueOf(first/second));break;
} */


if (e.getActionCommand().equals("+"))
output.setText(String.valueOf(first+second));
else { if (e.getActionCommand().equals("-"))
output.setText(String.valueOf(first-second));
else {if (e.getActionCommand().equals("*"))
output.setText(String.valueOf(first*second)) ;
else
output.setText(String.valueOf(first/second));
}
}
}
}
--------------------------------------------------------------------------------------------------------------------------
搜索更多相关主题的帖子: switch 语句 
2006-04-01 23:07
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
switch ()里面不能是boolean变量,你那个表达式是一个布尔变量
要可用改成
switch(e.getActionCommand()){
case '+':.........


}
就可以了

可惜不是你,陪我到最后
2006-04-02 09:56
★王者至尊★
Rank: 1
等 级:新手上路
帖 子:528
专家分:0
注 册:2006-3-28
得分:0 
谢谢版主的回答,但是编译还是有问题:
------------------------------------
Minicalc.java:50: incompatible types
found : java.lang.String
required: int
switch(e.getActionCommand()){
^
1 error
------------------------------------
再求指教.

------Java 爱好者,论坛小混混,学习中------
2006-04-02 13:02
Magicmoon20
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-4-2
得分:0 
e.getActionCommand() 返回的是String类型的字符串,而switch()中的参数必须是整形或者是字符型的
2006-04-02 13:21
Magicmoon20
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-4-2
得分:0 
你可以考虑以下用 char a[]=(e.getActionCommand() )toCharArray() 将起转换成字符型的变量
2006-04-02 13:26
★王者至尊★
Rank: 1
等 级:新手上路
帖 子:528
专家分:0
注 册:2006-3-28
得分:0 

还是不行...........
是不是这种情况压根就不能用 switch语句 实现
---------------------------------------------
char F[]=(e.getActionCommand())toCharArray();
switch(F){
...........................
}
---------------------------------------------
这样不行


------Java 爱好者,论坛小混混,学习中------
2006-04-02 14:03
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
哦,对了,你改就定义一个编号啊
都定义成整型的,不就可以用在switch中了吗?
不过,一般事件函数用if else 不是很好吗


可惜不是你,陪我到最后
2006-04-02 14:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-54485-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.701269 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved