当前位置:编程学习 > JAVA >>

求一个计算器%功能实现Java代码

求一个计算器%功能实现Java代码,可以发到我的邮箱谢谢!287793391@qq.com Java 计算器%功能实现 --------------------编程问答-------------------- 直接a%b不行吗? --------------------编程问答-------------------- 真没明白楼主的意思 --------------------编程问答-------------------- 不明白啊不知道啊 --------------------编程问答-------------------- LZ说的可是1 / 2 = 50%这个意思? --------------------编程问答-------------------- 嗨还是不知道怎么弄啊 --------------------编程问答--------------------
引用 1 楼 fudongrifdr 的回复:
直接a%b不行吗?
 元首换头像了,江湖已无“答案”。 --------------------编程问答--------------------
引用 6 楼 magi1201 的回复:
Quote: 引用 1 楼 fudongrifdr 的回复:

直接a%b不行吗?
 元首换头像了,江湖已无“答案”。

答案永恒。。 --------------------编程问答-------------------- 我只是要一个像计算器上可以实现%功能的java代码
不难理解吧
或者编一个完整的计算器代码发一下也可以,要有%功能 --------------------编程问答-------------------- 什么意思%另一种实现? --------------------编程问答-------------------- 我从网上下了几个java代码编写的计算器,运行后%功能都实现不了,自己也写过几个都没有用 --------------------编程问答--------------------
引用 10 楼 h6823670 的回复:
我从网上下了几个java代码编写的计算器,运行后%功能都实现不了,自己也写过几个都没有用


这个符号有俩意思 你要的是百分号么 --------------------编程问答-------------------- 不是!我要的是15*5%=0.75这个功能 --------------------编程问答--------------------
引用 12 楼 h6823670 的回复:
不是!我要的是15*5%=0.75这个功能

那不是就是除以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;
}
} --------------------编程问答-------------------- 你可以看一下!
--------------------编程问答--------------------
楼主,你还可以打断点,跟踪下代码,看下具体哪一步出问题了,给了哪些数据,应该出什么结果,结果出了什么结果,然后把关键步骤的代码给出来,这么让大家帮你分析整段代码不太好吧。 --------------------编程问答-------------------- 呵呵!就分析其中的%号功能,其它不用分析,倒数25行,就是搞不明白为什么实现不了 --------------------编程问答--------------------
楼主 你的这个 15*5%=
就是按顺序点吗?点完后台就出错了 --------------------编程问答--------------------

} 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传值吧。 --------------------编程问答-------------------- 转换成浮点数? --------------------编程问答-------------------- 22楼说的是,在买的计算器上按顺序点是正确的,在这段代码运行出来的计算器上点就报错 --------------------编程问答--------------------
引用 26 楼 h6823670 的回复:
22楼说的是,在买的计算器上按顺序点是正确的,在这段代码运行出来的计算器上点就报错

百度上大把计算器的代码吧··
不要当伸手党啊 自己动手 --------------------编程问答--------------------
应该不难啊 --------------------编程问答-------------------- 扫描到%就/100啊,不应该这么难的啊 --------------------编程问答-------------------- 问题解决了吗,我在上面都已经把代码帮你找出来了,你的next值没有传过来,导致出错的。看我23楼的回复。 --------------------编程问答-------------------- 坚决不做伸手党,我要自己解决这个问题。感谢大家的指导!我会把这个问题处理好的。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,