首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

StingBuffer,该怎么处理

2012-04-14 
StingBufferimport javax.swing.*package aimport java.awt.event.*import java.awt.*public class Ca

StingBuffer
import javax.swing.*;
package a;
import java.awt.event.*;
import java.awt.*;
public class Calculator1 extends Frame implements ActionListener {
Frame frame;
Panel panel;
TextField t;
Button[] button;
  StringBuffer str=new StringBuffer("");
  double x, y;
  int z;
  Calculator1()
  {
  frame=new Frame();
  frame.setLayout(new BorderLayout());
  MenuBar mb=new MenuBar();
  Menu menu1=new Menu("编辑(E)");
  Menu menu2=new Menu("查看(v)");
  Menu menu3=new Menu("帮助(H)");
  MenuItem mi1=new MenuItem("复制(C) Ctrl+C ");
  MenuItem mi2=new MenuItem("粘贴(V) Ctrl+V ");
  MenuItem m2=new MenuItem("退出");
  m2.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e2) 
  {  
  System.exit(0);
  } 
  });
  MenuItem mi3=new MenuItem("标准型(T) ");
  MenuItem mi4=new MenuItem("科学型(S) ");
  MenuItem mi5=new MenuItem("数据分组(I) ");
  MenuItem mi6=new MenuItem("帮助主题(H) ");
  MenuItem mi7=new MenuItem("关于计算器(A) ");
  String s[]={"My","love","退格","CE","C","7","8","9","+/-","sqrt","4","5","6","/","%","1","2","3","-","0","*","1/x",".","+","="};
  button=new Button[s.length];
  panel=new Panel();
  panel.setLayout(new GridLayout(5,5));
  t=new TextField("0",27);
  t.setEnabled(false); 
  for(int i=0;i<button.length;i++)
  {
  button[i]=new Button(s[i]);
  button[i].setForeground(Color.blue);
  panel.add(button[i]);
  }  
  for(int i=0;i<button.length;i++)
  {
  button[i].addActionListener(this);
  // button[i].setBackground(new Color(194,171,245));
  }
  button[0].addMouseListener(new MouseAdapter(){
  public void mouseEntered(MouseEvent e){
  button[0].setBackground(Color.cyan);
  }
  });
  button[0].addMouseListener(new MouseAdapter(){
  public void mouseExited(MouseEvent e){
  //button[0].setBackground());
  }});
  mb.add(menu1);
  mb.add(menu2);
  mb.add(menu3);
  mb.add(menu1);
  mb.add(menu2);
  mb.add(menu3);
  menu1.add(mi1);
  menu1.add(mi2);
  menu1.add(m2);
  menu2.add(mi3);
  menu2.add(mi4);
  menu2.add(mi5);
  menu3.add(mi6);
  menu3.add(mi7); 
  frame.setMenuBar(mb);
  frame.setBounds(300,300,260,370);
  frame.add(t,BorderLayout.NORTH);
  frame.add(panel,BorderLayout.CENTER);
  frame.setBackground(Color.blue);
  frame.setResizable(false);
  frame.setVisible(true);  
  frame.addWindowListener(new WindowAdapter(){


  public void windowClosing(WindowEvent e1) { 
  System.exit(0); 
  } 
  });  
  }
  public void actionPerformed(ActionEvent e2) 
  {  
  try{
  if(e2.getSource()==button[3])//CE
  {
  t.setText("0");
  str.setLength(0);
  }  
   
  else if(e2.getSource()==button[4])//C
  { 
  t.setText("0");
  str.setLength(0); 
  }  
  else if(e2.getSource()==button[8])//+/-
  { 
  x=Double.parseDouble(t.getText().trim()); 
  t.setText(""+(-x)); 
  } 
  else if(e2.getSource()==button[23])//+
  { 
  x=Double.parseDouble(t.getText().trim()); 
  str.setLength(0); 

  y=0d; 
  z=0; 
  } 
  else if(e2.getSource()==button[18])//-
  { 
  x=Double.parseDouble(t.getText().trim()); 
  str.setLength(0); 
  y=0d; 
  z=1; 
  } 
  else if(e2.getSource()==button[20])//*
  { 
  x=Double.parseDouble(t.getText().trim()); 
  str.setLength(0); 
  y=0d; 
  z=2; 
  } 
  else if(e2.getSource()==button[13])// /
  { 
  x=Double.parseDouble(t.getText().trim()); 
  str.setLength(0); 
  y=0d; 
  z=3; 
  } 
  else if(e2.getSource()==button[24])// =
  { 
  str.setLength(0); 
  switch(z) 
  { 
  case 0 : t.setText(""+(x+y));break; 
  case 1 : t.setText(""+(x-y));break; 
  case 2 : t.setText(""+(x*y));break; 
  case 3 : t.setText(""+(x/y));break; 
  } 
  }
  else if(e2.getSource()==button[22])// .
  { 
  if(t.getText().trim().indexOf('.')!=-1)
  {

  } 
  else
  { 
  if(t.getText().trim().equals("0")) 
  { 
  str.setLength(0); 
  t.setText((str.append("0"+e2.getActionCommand())).toString()); 
  } 
  else if(t.getText().trim().equals(""))


  { 
  } 
  else 
  {
  t.setText(str.append(e2.getActionCommand()).toString()); 
  } 
  } 
  y=0d;
  }
  else if(e2.getSource()==button[9])// sqrt
  { 
  x=Double.parseDouble(t.getText().trim()); 
  t.setText("数字格式异常"); 
  if(x<0) 
  t.setText("负数没有平方根"); 
  else 
  t.setText(""+Math.sqrt(x)); 
  str.setLength(0); 
  y=0d; 
  } 
  else if(e2.getSource()==button[14])//% 
  { 
  x=Double.parseDouble(t.getText().trim()); 
  t.setText(""+(0.01*x)); 
  str.setLength(0); 
  y=0d; 
  } 
  else if(e2.getSource()==button[21])// 1/x
  {

  x=Double.parseDouble(t.getText().trim()); 
  if(x==0) 
  {
  t.setText("除数不能为零"); 
  }
  else 
  { 
  t.setText(""+(1/x)); 
  } 
  str.setLength(0); 
  y=0d; 
  } 
  else
  { 
  if(e2.getSource()==button[19])//0
  { 
  if(t.getText().trim().equals("0"))
  {

  } 
  else 
  { 
  t.setText(str.append(e2.getActionCommand()).toString()); 
  y=Double.parseDouble(t.getText().trim()); 
  } 
  } 
  else if(e2.getSource()==button[2])//退格
  { 
  if(!t.getText().trim().equals("0"))
  { 
  if(str.length()!=1) 
  { 
  t.setText(str.delete(str.length()-1,str.length()).toString());
  } 
  else 
  { 
  t.setText("0"); 
  str.setLength(0); 
  }
  }
  y=Double.parseDouble(t.getText().trim()); 
  } 
  else
  { 
  t.setText(str.append(e2.getActionCommand()).toString()); 
  y=Double.parseDouble(t.getText().trim()); 
  }
  }
  }  
  catch(NumberFormatException e){ 
  t.setText("数字格式异常"); 
  }
  catch(StringIndexOutOfBoundsException a)
  {
  t.setText("字符串索引越界");
  }}
  public static void main(String[] args) {
  Calculator1 c=new Calculator1();


   
  }
}



这里 StringBuffer str=new StringBuffer("");
和下面的好多个 str.setLength(0); 为什么这样设置就能把TextFile的内容清空呢?跟这个StringBuffer有什么关系呢?

[解决办法]
这样不能把TextField清空,是前面的setText("0");清空的
[解决办法]
str.setLength(0)就相当于将这个字符串清空了
[解决办法]
不知道楼主具体什么意思,如果t.setText(sb.toString()),就跟sb有关系,如果t.setText("0"),当然就跟sb没关系,感觉我们不是在讨论同一问题,对不上号。

热点排行