java程序问题。
在上面的文本框里输入一些东西。
按下按钮,下面可以分析出来句子中有几个英文汉字数字符号空格
程序思路有了,界面也做出来了。
方法那块儿有语法错误。高手指点一下。谢谢
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Zok extends JFrame implements ActionListener{
JButton b1=new JButton("统计");
JLabel l=new JLabel ("请输入");
JLabel l1=new JLabel("数字个数");
JLabel l2=new JLabel("英文个数");
JLabel l3=new JLabel("汉字个数");
JLabel l4=new JLabel("空格个数");
JLabel l5=new JLabel("符号个数");
JLabel kong=new JLabel("");
JTextField tf=new JTextField(15);
JTextField tf1=new JTextField(15);
JTextField tf2=new JTextField(15);
JTextField tf3=new JTextField(15);
JTextField tf4=new JTextField(15);
JTextField tf5=new JTextField(15);
JPanel pane=new JPanel();
int shuzi=0;
int yingwen=0;
int hanzi=0;
int kongge=0;
int fuhao=0;
String s;
char[] cc=new char[15];
Integer [] ii;
int t;
public Zok(){
super("Zokgadda字数统计表");
setSize(300,300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pane.add(l);
pane.add(tf);
pane.add(kong);
pane.add(b1);
pane.add(l1);
pane.add(tf1);
pane.add(l2);
pane.add(tf2);
pane.add(l3);
pane.add(tf3);
pane.add(l4);
pane.add(tf4);
pane.add(l5);
pane.add(tf5);
b1.addActionListener(this);
pane.setLayout(new GridLayout(7,2));
setContentPane(pane);
}
public static void main(String[] args){
JFrame Frame=new Zok();
Frame.show();
}
public void actionPerformed(ActionEvent evt){
if(evt.getSource()==b1){
s=tf.getText();
for(t=0;t<=s.length();t++){
cc[t]=(s.charAt(t));
ii[t]=Integer.parseInt(cc[t]);
}
for(t=0;t<s.length();t++){
if(ii[t]==32) {kongge++;break;}
if((ii[t]>=65)&(ii[t]<=90)||(ii[t]>=97)&(ii[t]<=122)){yingwen++;break;}
if((ii[t]>=48)&(ii[t]<=57)){shuzi++;break;}
if((ii[t]>=0)&(ii[t]<=255)){fuhao++;break;}
}
hanzi=s.length()-shuzi-fuhao-yingwen-kongge;
tf1.setText(""+shuzi);
tf2.setText(""+yingwen);
tf3.setText(""+hanzi);
tf4.setText(""+kongge);
tf5.setText(""+fuhao);
}
}
}
回复:回答者: myoneju - 见习魔法师 二级
大哥~可不可以把整段代码发出来~ 解决了给你100分都没问题啊~~~~
按你说的改了还是编译出错,我的是jdk 1。4 展开
----------------------------------------------------
char[] cc=new char[15];
Integer [] ii;
改为:
char cc;
Integer ii;
----------------------------------------------------
如果是jdk1.1以上
Frame.show();
改为:
Frame.setVisible(true);
----------------------------------------------------
public void actionPerformed(ActionEvent evt){
if(evt.getSource()==b1){ //这句可以不要
s=tf.getText();
for(t=0;t<=s.length();t++){
//循环次数应该是s.length()-1,这里造成了Local information is not present错误
cc[t]=(s.charAt(t));
ii[t]=Integer.parseInt(cc[t]);
}
for(t=0;t<s.length();t++){
if(ii[t]==32) {kongge++;break;}
if((ii[t]>=65)&(ii[t]<=90)||(ii[t]>=97)&(ii[t]<=122)){yingwen++;break;}
if((ii[t]>=48)&(ii[t]<=57)){shuzi++;break;}
if((ii[t]>=0)&(ii[t]<=255)){fuhao++;break;}
}
hanzi=s.length()-shuzi-fuhao-yingwen-kongge;
tf1.setText(""+shuzi);
tf2.setText(""+yingwen);
tf3.setText(""+hanzi);
tf4.setText(""+kongge);
tf5.setText(""+fuhao);
}
}
改为:
public void actionPerformed(ActionEvent evt){
//--------------------------------------------------
shuzi=0;
yingwen=0;
hanzi=0; //变量初始化,防止数量累加
kongge=0;
fuhao=0;
//--------------------------------------------------
s=tf.getText();
for(t=0;t<s.length();t++){
cc=(s.charAt(t));
ii=Integer.valueOf(cc);
if(ii==32) {kongge++;continue;} else
if((ii>=65)&(ii<=90)||(ii>=97)&(ii<=122)){yingwen++;continue;} else
if((ii>=48)&(ii<=57)){shuzi++;continue;} else
if((ii>=0)&(ii<=255)){fuhao++;continue;}
}
hanzi=s.length()-shuzi-fuhao-yingwen-kongge;
tf1.setText(""+shuzi);
tf2.setText(""+yingwen);
tf3.setText(""+hanzi);
tf4.setText(""+kongge);
tf5.setText(""+fuhao);
}
-------------------------------------------------------
PS:楼主可不可以加多几分,俺没分了,呵呵。
运行结果:
s=tf.getText();
for(t=0;t<=s.length();t++){
cc[t]=(s.charAt(t));
//这里有问题,改成ii[t]=Integer.parseInt((int)cc[t]);
ii[t]=Integer.parseInt(cc[t]);
}
for(t=0;t<s.length();t++){
//以下所有的break全部换成continue;
if(ii[t]==32) {kongge++;break;}
if((ii[t]>=65)&(ii[t]<=90)||(ii[t]>=97)&(ii[t]<=122)){yingwen++;break;}
if((ii[t]>=48)&(ii[t]<=57)){shuzi++;break;}
if((ii[t]>=0)&(ii[t]<=255)){fuhao++;break;}
}
OK,没问题了
改成ii[t]=Integer.parseInt(new Character(cc[t]).toString());
或则改成 ii[t] = Integer.parseInt(s,cc[t]);
或则改成 ii[t] = new Integer((byte)char)
语法没错误了哈。
你这个逻辑上还有点问题,
for(t=0;t<s.length();t++){
//以下所有的break全部换成continue;
.
.
.
}