自己写的计算机
Posted Saber本
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自己写的计算机相关的知识,希望对你有一定的参考价值。
经过自己的多轮测试,应该是没有bug了,运算起来十分灵活,有兴趣的可以复制下来自己测试一下。
package Calculator;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
class jisuanqi extends Frame implements ActionListener
{
TextField a;
Button []d=new Button[16];
String yemian="";
double d1;
double d2;
double yi;
double er;
String qian;
boolean flager=true;
boolean flagsan=true;
boolean flagsi=true;
boolean flagwu=true;
int jilu=0;
String fuhao;
boolean flag=true;
jisuanqi()
{
a=new TextField();
a.setEditable(false);
add(a);
Panel c=new Panel();
c.setLayout(new GridLayout(5,4,5,5));
c.add(new Label(""));
c.add(new Label(""));
Button shanyige=new Button("c");
shanyige.addActionListener(this);
c.add(shanyige);
c.add(new Button("ce"));
String [] b={"7","8","9","/","4","5","6","*","1","2","3","-","0","=",".","+"};
for(int x=0;x<b.length;x++)
{
d[x]=new Button(b[x]);
c.add(d[x]);
}
for(int x=0;x<d.length;x++)
{
d[x].addActionListener(this);
}
add(c,BorderLayout.SOUTH);
setSize(300,250);
setVisible(true);
setResizable(false);
setLocation(600,300);
}
public void actionPerformed(ActionEvent e)
{
String num=e.getActionCommand();
String b=a.getText();
switch(num)
{
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
if(flager)
{
if(b.equals("0"))
{
a.setText(num);
}
else
{
a.setText(b+num);
}
}
else
{
a.setText(num);
flager=true;
flagwu=false;
jilu=0;
}
flagsan=false;
break;
case "+":jisuan(a,"+");break;
case "-":jisuan(a,"-");break;
case "*":jisuan(a,"*");break;
case "/":jisuan(a,"/");break;
case "=":jisuan(a,"=");break;
case ".":
if(!b.contains("."))
{
a.setText(b+".");
}
break;
case "c":
if(flagwu)
{
if(b.length()>1)
{
String hh=b.substring(0,b.length()-1);
a.setText(hh);
yi=Double.parseDouble(hh);
}
else
{
a.setText("");d1=0;
}
}
else
{
if(b.length()>1)
{
String hh=b.substring(0,b.length()-1);
a.setText(hh);
}
else
{
a.setText("");
}
}
break;
}
}
void jisuan(TextField a,String b)
{
if(a.getText().equals("")||flagsan==true)
{
fuhao=b;
}//判断屏幕中值是否为空或者运算符是否已经用过一次,如果用过,flagsan为false,符号就等于你输入的最后一个运算符。
else
{
if(flag)
{
yi=Double.parseDouble(a.getText());
a.setText(null);
flag=false;
fuhao=b;
flagwu=false;
}
else
{
er=Double.parseDouble(a.getText());
a.setText(null);
switch(fuhao)
{
case "+":yi=yi+er;a.setText(yi+"");break;
case "-":yi=yi-er;a.setText(yi+"");break;
case "*":yi=yi*er;a.setText(yi+"");break;
case "/":yi=yi/er;a.setText(yi+"");break;
case "=":jisuan(a,fuhao);yi=er;break;
}
fuhao=b;
flager=false;
flagsan=true;
if(fuhao.equals("="))
{
flagwu=true;
jilu=0;
}
else
{
jilu++;
if(jilu%2==0)
{
flagwu=false;
}
else
{
flagwu=true;
}
}
}
}
}
}//class结束
public class jisuanqidiaoyong
{
public static void main(String[] args)
{
new jisuanqi();
}
}
以上是关于自己写的计算机的主要内容,如果未能解决你的问题,请参考以下文章
自己写的cuda函数和cublas和ispc的对比(均支持非方阵的计算)
自己写的cuda函数和cublas和ispc的对比(均支持非方阵的计算)
自己写的cuda函数和cublas和ispc的对比(均支持非方阵的计算)