解决方案 »

  1.   

    我只是要一个像计算器上可以实现%功能的java代码
    不难理解吧
    或者编一个完整的计算器代码发一下也可以,要有%功能
      

  2.   

    我从网上下了几个java代码编写的计算器,运行后%功能都实现不了,自己也写过几个都没有用
      

  3.   

    那不是就是除以100么。用float float f = 15f/100 * 5;
    System.out.println(f);
      

  4.   

    else if(tempSign.equals("%"))
    {
    int x=100;
    jtf.setText( String.valueOf(change(temp)/100*(change(next))));
    // System.out.println("ok");
    }
    这段代码怎么修改才能实现上面你说的那种功能呢?
      

  5.   

    jtf.setText( String.valueOf((float)(change(temp)/100*(change(next)))));
      

  6.   

    package cn.java.base.ch03;
    import javax.swing.*;import java.awt.event.*; 
    import java.awt.*;//小小限制,根号之后,需要再按一次等号键..
    class Demo7 extends JFrame implements ActionListener{
    JButton []jb=new JButton[20];
    static String[] names={"7","8","9","/","√","4","5","6","*","+/-","1","2","3","-","%","0",".","c","+","="};
    JPanel jp1,jp2;
    JTextField jtf;
    //第一个是保存运算符,第二个是保存运算中的第一个数据
    String tempSign=new String();
    String temp=new String();
    public static  void main(String args[]){
    Demo7 x=new Demo7();

    }
    public Demo7(){
    jp1=new JPanel();
    jp2=new JPanel();
    for(int i=0;i<=19;i++){
    jb[i]=new JButton(names[i]);
    jb[i].addActionListener(this);
    jb[i].setActionCommand(names[i]);
    jp2.add(jb[i]);
    }
    jtf=new JTextField(25);
    jp1.add(jtf);
    jp2.setLayout(new GridLayout(4,5));
    this.add(jp1,BorderLayout.NORTH);
    this.add(jp2);
    this.setSize(300,300);
    this.setLocationRelativeTo(null);
    this.setTitle("简易计算器");
    this.setIconImage((new ImageIcon("s:\\icon.jpg")).getImage());
    this.setVisible(true); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    //类型转换
    double change(String t)
    {
    return Double.parseDouble(t);
    }
    public void actionPerformed(ActionEvent e) {
    for(int i=0;i<=19;i++)
    {
    //数字系列
    if(e.getActionCommand().equals(names[i])&&(i==0||i==1||i==2||i==5||i==6||i==7||i==10||i==11||i==12||i==15))
    {
    jtf.setText(jtf.getText()+names[i]);
    // System.out.println("数字测试");
    }
    else if(e.getActionCommand().equals(names[i]))
    {
    String sign=names[i];
    String first="",next="";
    if(sign.equals("+")||sign.equals("-")||sign.equals("*")||sign.equals("/")||sign.equals("√")||sign.equals("%"))
    {
    tempSign=sign;
    // System.out.println("符号测试");
    first=jtf.getText();
    temp=first;
    jtf.setText(null);
    }
    else if(sign.equals("=")){
    //System.out.println("符号测试");
    next=jtf.getText();
    if(tempSign.equals("+"))
    {
    jtf.setText(String.valueOf(change(temp)+change(next)));
    //System.out.println("结果出来咯");
    }
    else if(tempSign.equals("-"))
    {
    jtf.setText(String.valueOf(change(temp)-change(next)));
    }
    else if(tempSign.equals("*"))
    {
    jtf.setText(String.valueOf(change(temp)*change(next)));
    }
    else if(tempSign.equals("/"))
    {
    if(Double.parseDouble(next)==0)
    jtf.setText("ERROR");
    jtf.setText(String.valueOf(change(temp)/change(next)));
    System.out.println("ok");
    }
    else if(tempSign.equals("√"))
    {
    if(Double.parseDouble(temp)<0)
    jtf.setText("ERROR");
    jtf.setText(String.valueOf(Math.sqrt(change(temp))));
    }
    else if(tempSign.equals("%"))
    {
    int x=100;
    jtf.setText( String.valueOf((float)change(temp)/100*(change(next))));
    // System.out.println("ok");
    }
    }
    else if(sign.equals("+/-"))
    {
    jtf.setText("-"+jtf.getText());
    }
    else if(sign.equals("."))
    {
    jtf.setText(jtf.getText()+names[i]);
    //System.out.println("点号");
    }
    else if(sign.equals("c")) 
    {
    jtf.setText(null);
    }
    }
    }
    }
    private String tofloat(String temp2) {
    // TODO Auto-generated method stub
    return null;
    }
    }
      

  7.   


    } else if(tempSign.equals("%")) {
        int x=100;
    // String temp="12";
    // next= "15";
        jtf.setText( String.valueOf((float)change(temp)/100*(change(next))));
        // System.out.println("ok");
    }
    next值没有传过来,next为空,所以出不来值,后台有错误的。把注释部分放开,程序不报错,可以出结果。但结果对否,我没有验证,楼主自己检查代码吧
      

  8.   

    这一行没问题,结果也对的
    jtf.setText( String.valueOf((float)(change(temp)/100*(change(next)))));
    楼主检查自己代码中的next传值吧。
      

  9.   

    问题解决了吗,我在上面都已经把代码帮你找出来了,你的next值没有传过来,导致出错的。看我23楼的回复。