求一個計算器%功能實現Java代碼


求一個計算器%功能實現Java代碼,可以發到我的郵箱謝謝!287793391@qq.com

31 个解决方案

#1


直接a%b不行嗎?

#2


真沒明白樓主的意思

#3


不明白啊不知道啊

#4


LZ說的可是1 / 2 = 50%這個意思?

#5


嗨還是不知道怎么弄啊

#6


引用 1 樓 fudongrifdr 的回復:
直接a%b不行嗎?
 元首換頭像了,江湖已無“答案”。

#7


引用 6 樓 magi1201 的回復:
Quote: 引用 1 樓 fudongrifdr 的回復:

直接a%b不行嗎?
 元首換頭像了,江湖已無“答案”。

答案永恆。。

#8


我只是要一個像計算器上可以實現%功能的java代碼
不難理解吧
或者編一個完整的計算器代碼發一下也可以,要有%功能

#9


什么意思%另一種實現?

#10


我從網上下了幾個java代碼編寫的計算器,運行后%功能都實現不了,自己也寫過幾個都沒有用

#11


引用 10 樓 h6823670 的回復:
我從網上下了幾個java代碼編寫的計算器,運行后%功能都實現不了,自己也寫過幾個都沒有用


這個符號有倆意思 你要的是百分號么

#12


不是!我要的是15*5%=0.75這個功能

#13


引用 12 樓 h6823670 的回復:
不是!我要的是15*5%=0.75這個功能

那不是就是除以100么。用float

		float f = 15f/100 * 5;
System.out.println(f);

#14


謝謝!我試試

#15


else if(tempSign.equals("%"))
{
int x=100;
jtf.setText( String.valueOf(change(temp)/100*(change(next))));
// System.out.println("ok");
}
這段代碼怎么修改才能實現上面你說的那種功能呢?

#16


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

#17


沒用呀!還是不能實現這個功能

#18


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;
}
}

#19


你可以看一下!

#20



樓主,你還可以打斷點,跟蹤下代碼,看下具體哪一步出問題了,給了哪些數據,應該出什么結果,結果出了什么結果,然后把關鍵步驟的代碼給出來,這么讓大家幫你分析整段代碼不太好吧。

#21


呵呵!就分析其中的%號功能,其它不用分析,倒數25行,就是搞不明白為什么實現不了

#22



樓主 你的這個 15*5%=
就是按順序點嗎?點完后台就出錯了

#23



} 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為空,所以出不來值,后台有錯誤的。把注釋部分放開,程序不報錯,可以出結果。但結果對否,我沒有驗證,樓主自己檢查代碼吧

#24


這一行沒問題,結果也對的
jtf.setText( String.valueOf((float)(change(temp)/100*(change(next)))));
樓主檢查自己代碼中的next傳值吧。

#25


轉換成浮點數?

#26


22樓說的是,在買的計算器上按順序點是正確的,在這段代碼運行出來的計算器上點就報錯

#27


引用 26 樓 h6823670 的回復:
22樓說的是,在買的計算器上按順序點是正確的,在這段代碼運行出來的計算器上點就報錯

百度上大把計算器的代碼吧··
不要當伸手黨啊 自己動手

#28



應該不難啊

#29


掃描到%就/100啊,不應該這么難的啊

#30


問題解決了嗎,我在上面都已經把代碼幫你找出來了,你的next值沒有傳過來,導致出錯的。看我23樓的回復。

#31


堅決不做伸手黨,我要自己解決這個問題。感謝大家的指導!我會把這個問題處理好的。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com