求一个计算器%功能实现Java代码 Java计算器%功能实现 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我只是要一个像计算器上可以实现%功能的java代码不难理解吧或者编一个完整的计算器代码发一下也可以,要有%功能 我从网上下了几个java代码编写的计算器,运行后%功能都实现不了,自己也写过几个都没有用 那不是就是除以100么。用float float f = 15f/100 * 5; System.out.println(f); else if(tempSign.equals("%")) { int x=100; jtf.setText( String.valueOf(change(temp)/100*(change(next))));// System.out.println("ok"); }这段代码怎么修改才能实现上面你说的那种功能呢? jtf.setText( String.valueOf((float)(change(temp)/100*(change(next))))); 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; }} } 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为空,所以出不来值,后台有错误的。把注释部分放开,程序不报错,可以出结果。但结果对否,我没有验证,楼主自己检查代码吧 这一行没问题,结果也对的jtf.setText( String.valueOf((float)(change(temp)/100*(change(next)))));楼主检查自己代码中的next传值吧。 问题解决了吗,我在上面都已经把代码帮你找出来了,你的next值没有传过来,导致出错的。看我23楼的回复。 帮忙解释下这个正则 求J2SDK1.4.0下载 菜鸟提问:如何在UltraEdit里面让java代码语法着色。 executeBatch() 对于数据库来说是一条SQL还是多条? java 强制转换问题 一个简单问题,在java中如何将文本文件中的数据倒入到数据库中!在现等待,立等结贴! 如何在网页中加载JAVA小应用程序(在线等待) 哪有Think In Java的中文版和关于Corba的书下载? SWT shell中无法响应事件 采用DecimalFormat格式化数字中的小问题 swing的问题急求大神指教啊 JTextPane改变字体颜色的一个问题
不难理解吧
或者编一个完整的计算器代码发一下也可以,要有%功能
System.out.println(f);
{
int x=100;
jtf.setText( String.valueOf(change(temp)/100*(change(next))));
// System.out.println("ok");
}
这段代码怎么修改才能实现上面你说的那种功能呢?
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;
}
}
} 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为空,所以出不来值,后台有错误的。把注释部分放开,程序不报错,可以出结果。但结果对否,我没有验证,楼主自己检查代码吧
jtf.setText( String.valueOf((float)(change(temp)/100*(change(next)))));
楼主检查自己代码中的next传值吧。