-
2021-07-25 14:54:58
java语言实现简单计算器(超详细步骤+解题思路)
思路
首先,应该理解这道题是为Java新手准备的练手题,对于完全没有接触过编程的同学完全可以跳过这段话,直接看下面的代码。对于有一定的编程基础的,例如了解过C语言,Python的人来说可能需要更长时间学习,因为原先储存在脑海中的知识会阻碍我们对新知识的学习,所以我们在学习一门新知识的时候不能眼高手低,轻视知识本身,而应该想办法利用已经掌握的知识帮助我们更快的学习一门新知识。
那么应该怎样利用呢,方法就是类比,每个人都知道所以高级语言本身都是相通的,所以首先可以把问题转化为我们可以解决的问题,已C语言为例,我们可以先用C语言实现这个问题,然后在把代码转换成为Java语言,虽然是只需要找出二者的不同点,但是这样知识的记忆往往更加深刻。
代码
C语言实现
#include<stdio.h> int main() { int a, b, sum; char f; scanf("%d %c %d",&a, &f, &b); switch(f){ case '+':sum = a + b;break; case '-':sum = a - b;break; case '*':sum = a * b;break; case '/':sum = a / b;break; default:printf("您的输入错误,请重新输入"); } printf("%d %c %d = %d", a, f, b, sum); return 0; }
解题步骤
由于本题比较简单,将上述代码转化成为Java代码只需修改输入输出语句即可,尤其是输入语句。
1.在C语言中可以加两个待计算的值和运算符一起输入,但在Java中需要分别输入。
2.先输入第一个待运算的数:
Scanner in = new Scanner(System.in);//java中控制输入的语句,一个方法中只需要写一次即可 int a = in.nextInt();
3.再输入运算符:
char f = in.next().charAt(0);
4.输入第二个待运算的数,同1.
注
三次输入之间需要两次回车键
Java实现
package Basic.method;//提示,注意包名要和自己的一致 import java.util.Scanner; public class demo03 { public static void main(String[] args) { int sum = 0; Scanner in = new Scanner(System.in); int a = in.nextInt(); char f = in.next().charAt(0); int b = in.nextInt(); switch(f){ case '+':sum = a + b;break; case '-':sum = a - b;break; case '*':sum = a * b;break; case '/':sum = a / b;break; default: System.out.println("您的输入错误,请重新输入"); } System.out.println(a+" "+f+" "+b+" ="+" "+sum); } }
结尾
希望这篇文章对你有所帮助。欢迎留下宝贵意见,我会持续改进提高。
更多相关内容 -
JAVA语言实现计算器
2018-05-27 08:57:19JAVA语言实现计算器若觉得有用请点赞或关注~以后会发布更多有用的内容。
JAVA语言实现计算器
Design By 海上的雨
软件界面如下
完整实现代码
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Jisuanqi { public static void main(String[] args) { new MyFrame("计算器"); } } class MyFrame extends Frame{ private static final long serialVersionUID = 1L; private TextArea ta,tb; public MyFrame(String title){ super(title); SetTextAreas(); SetButtonArea(); SetMainFram(); } private void SetButtonArea() { addButton("7",33,28,20,178); addButton("8",33,28,58,178); addButton("9",33,28,96,178); addButton("/",33,28,134,178); addButton("%",33,28,172,178); addButton("4",33,28,20,210); addButton("5",33,28,58,210); addButton("6",33,28,96,210); addButton("*",33,28,134,210); addButton("1/x",33,28,172,210); addButton("1",33,28,20,242); addButton("2",33,28,58,242); addButton("3",33,28,96,242); addButton("-",33,28,134,242); addButton("0",71,28,20,274); addButton(".",33,28,96,274); addButton("+",33,28,134,274); addButton("=",33,60,172,242); } double m,n; String k; boolean flag =true; boolean flag2 =false; private void addButton(String string, int i, int j,int x,int y) { final Button b = new Button(string); b.setLocation(x, y); b.setSize(i, j); b.setFont(new Font("标楷体", Font.BOLD, 15)); b.setBackground(Color.pink); b.setForeground(Color.darkGray); b.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { counts(); } private void counts() { if(ta.getText().equals("")&&(b.getActionCommand().equals("+")|| b.getActionCommand().equals("-")|| b.getActionCommand().equals("*")|| b.getActionCommand().equals("/")|| b.getActionCommand().equals("%")|| b.getActionCommand().equals("1/x")|| b.getActionCommand().equals("="))) { }else if(ta.getText().equals(".")&&(b.getActionCommand().equals("+")|| b.getActionCommand().equals("-")|| b.getActionCommand().equals("*")|| b.getActionCommand().equals("/")|| b.getActionCommand().equals("%")|| b.getActionCommand().equals("1/x")|| b.getActionCommand().equals("="))){ }else { if( b.getActionCommand().equals("+")|| b.getActionCommand().equals("-")|| b.getActionCommand().equals("*")|| b.getActionCommand().equals("%")|| b.getActionCommand().equals("1/x")|| b.getActionCommand().equals("/")){ if(flag2 = true) { flag2 = false; } if(flag) { n = new Double(ta.getText()).doubleValue(); flag = false; }else { if(k=="="){ }else { m = new Double(ta.getText()).doubleValue(); if(k == "-") { if(n==0) n = m; else n=n-m; }else if(k == "+") { if(n==0) n = m; else n=n+m; }else if(k == "*") { if(n==0) n = m; else n=n*m; }else if(k=="%"){ if(n==0) n=m; else m=m*100; }else if(k=="1/x"){ if(n==0) n=m; else n=1/m; }else if(k == "/") { if(n==0) n = m; else n=n/m; } } } k = b.getActionCommand(); ta.setText(""); }else if(b.getActionCommand().equals("=")) { m = new Double(ta.getText()).doubleValue(); if(k == "+") { ta.setText(""); ta.append(n+"+"+m); ta.append(System.getProperty("line.separator")); n = n+m; ta.append("="+n); }else if(k == "-") { ta.setText(""); ta.append(n+"-"+m); ta.append(System.getProperty("line.separator")); n = n-m; ta.append("="+n); }else if(k == "*") { ta.setText(""); ta.append(n+"*"+m); ta.append(System.getProperty("line.separator")); n = n*m; ta.append("="+n); }else if(k == "%") { ta.setText(""); ta.append("%"+m); ta.append(System.getProperty("line.separator")); m = m*100; ta.append("="+m+"%"); }else if(k == "1/x") { ta.setText(""); ta.append(1+"/"+m); ta.append(System.getProperty("line.separator")); n = 1/m; ta.append("="+n); }else if(k == "/") { ta.setText(""); ta.append(n+"/"+m); ta.append(System.getProperty("line.separator")); n= n/m; ta.append("="+n); } k="="; flag2 = true; }else { if(flag2) { flag = true; flag2 = false; ta.setText(""); m = n =0; } ta.append(b.getActionCommand()); } } } }); this.add(b); } private void SetTextAreas() { ta = new TextArea("0",8,52,3); ta.setBackground(Color.lightGray); ta.setSize(190, 50); ta.setFont(new Font("标楷体", Font.BOLD, 15)); ta.setLocation(20,60); this.add(ta); tb = new TextArea(" DESIGN BY 海与怡",8,52,3); tb.setBackground(Color.pink); tb.setSize(190,25); tb.setFont(new Font("标楷体", Font.BOLD, 16)); tb.setForeground(Color.blue); tb.setLocation(20,130); this.add(ta); this.add(tb); } @SuppressWarnings("deprecation") private void SetMainFram() { this.setLayout(null); this.setSize(220,310); this.setVisible(true); this.setLocation(310, 340); this.setResizable(false); ta.setEditable(false); tb.setEditable(false); this.setCursor(Cursor.HAND_CURSOR); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } }
若觉得有用请点赞或关注~以后会发布更多有用的内容。
-
山寨版超级玛丽(Java语言实现)
2017-01-09 23:59:13基于Java语言写的山寨版超级玛丽 -
Java语言实现简单FTP软件源代码
2013-08-14 20:46:02Java语言实现简单FTP软件源代码,供大家下载,参考参考 -
Java语言实现石头剪刀布游戏
2020-10-05 21:49:07用 JAVA 语言设计如下界面的石头剪刀布游戏。游戏的一方点击界面上石头、剪刀、布按钮,游戏的另一方计算机随机选择,然后给出游戏结果。 Java: import java.awt.*; import java.awt.event.ActionEvent; import ...石头剪刀布游戏
题目:
用 JAVA 语言设计如下界面的石头剪刀布游戏。游戏的一方点击界面上石头、剪刀、布按钮,游戏的另一方计算机随机选择,然后给出游戏结果。Java:
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; @SuppressWarnings("serial") public class TestOne extends JFrame implements ActionListener{ // 定义石头剪刀布的 JButton 对象 JButton jiandao, shitou, bu, clear; JPanel panel2, panel1; JLabel label; // 主函数 public static void main(String[] args) { TestOne frame = new TestOne(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体关闭按钮 frame.setVisible(true); // 使窗体可见 } // 设置窗体 public TestOne() { setTitle("石头剪刀布游戏"); // 石头剪刀布游戏 setLocation(250, 250); // 设置窗体坐上顶点坐标 setSize(300, 300); // 设置窗体大小。窗体大小 : 350X350 // 建立对象 panel1 = new JPanel(); panel1.setBackground(Color.yellow); shitou = new JButton("石头"); jiandao = new JButton("剪刀"); bu = new JButton("布"); clear = new JButton("清空"); panel2 = new JPanel(); panel2.setBackground(Color.green); label = new JLabel("选择剪刀, 石头, 布开始游戏"); // 给所有 JBUtton 对象添加事件约束 // 给事件添加监听器 shitou.addActionListener(this); jiandao.addActionListener(this); bu.addActionListener(this); clear.addActionListener(this); // 把所有的新添加的对象都放进去窗体里面,先放进组件类,再放进窗体类 panel1.add(shitou); panel1.add(jiandao); panel1.add(bu); panel1.add(clear); panel2.add(label); add(panel1, BorderLayout.NORTH); add(panel2, BorderLayout.CENTER); } // 事件响应器 public void actionPerformed(ActionEvent e) { if(e.getSource() == shitou) { int i = ((int)(Math.random()*10))%3; switch(i) { case 0: label.setText("你出石头,电脑出石头,平局!"); break; case 1: label.setText("你出石头,电脑出剪刀,恭喜你赢了!"); break; case 2: label.setText("你出石头,电脑出布,很遗憾你输了!"); break; } }else if(e.getSource() == jiandao){ int i = ((int)(Math.random()*10))%3; switch(i) { case 0: label.setText("你出剪刀,电脑出石头,很遗憾你输了!"); break; case 1: label.setText("你出剪刀,电脑出剪刀,平局!"); break; case 2: label.setText("你出剪刀,电脑出布,恭喜你赢了!"); break; } }else if(e.getSource() == bu){ int i = ((int)(Math.random()*10))%3; switch(i) { case 0: label.setText("你出布,电脑出石头,恭喜你赢了!"); break; case 1: label.setText("你出布,电脑出剪刀,很遗憾你输了!"); break; case 2: label.setText("你出布,电脑出布,平局!"); break; } }else if(e.getSource() == clear) { label.setText("选择剪刀, 石头, 布开始游戏!"); } } }
运行结果:
-
解一元二次方程-Java语言实现
2020-11-08 21:37:07所以今天我用Java语言实现了当年的解一元二次方程的程序,思想还是以前的思想,只不过是语法不一样罢了,换汤不换药。 思想 授人以鱼不如授人以渔。首先先说一下写这个程序的需求和思想。 需求:当我们遇到前言
高考完的那个暑假我就开始自学C语言。那时候通过看视频和《C primer plus》写了一个解一元二次方程的程序,从此走上了吊打大学同班同学的路……
但是那次是用C语言写的,如今白云苍狗,我已经不是曾经的那个我了,但我还是一如既往的废物……Java已是我现在主要使用开发语言,能用Java就绝不用其他语言。
所以今天我用Java语言实现了当年的解一元二次方程的程序,思想还是以前的思想,只不过是语法不一样罢了,换汤不换药。
思想
授人以鱼不如授人以渔。首先先说一下写这个程序的需求和思想。
需求:当我们遇到一元二次方程ax²+bx+c=0(a≠0)时,只需要在程序中输入a,b,c的值,运行程序就能得到一元二次方程的两个解,当无解时,程序也会告诉我们程序无解。
思想:思想就是用求根公式法。
所以就是当我们输入a,b,c的值时,程序会先计算△(delta)的值。如果delta大于0,就利用求根公式计算方程的两个解;如果delta=0,也还是利用求根公式计算方程的解,但是输出的时候是x1=x2=[-b+√(bb-4ac)]/2a,就是只输出一个值;当delta<0,则方程无解,不需要任何计算。Java实现
//首先定义一元二次方程的两个解,数据类型要用float或者double double x1; double x2;
//然后定义一元二次方程的3个系数,a,b,c int a; int b; int c;
//计算跟delta,x1,x2的值 //x1=(-b+sqrt(b*b-4*a*c))/2a //x2=(-b-sqrt(b*b-4*a*c))/2a //这里我们用到Math.sqrt(),这个是用来计算开平方的 double delta=b*b-4*a*c; x1=(-b+Math.sqrt(delta))/2*a; x2=(-b-Math.sqrt(delta))/2*a;
//输入a,b,c的值 System.out.println("请依次输入一元二次方程a,b,c的值"); Scanner sc=new Scanner(System.in); a=sc.nextInt(); b=sc.nextInt(); c=sc.nextInt();
//判断delta的值 if(delta==0){ //这里有个初学者很容易犯错的地方,就是把==写成= //=表示的是赋值,==表示的是相等 //△等于0时,方程只有一个解 System.out.println("此方程有两个相同的解"); System.out.println("x1=x2="+x1); } else if(delta>0){ //△>0时,方程有两个解 //x1=(-b+sqrt(b*b-4*a*c))/2a //x2=(-b-sqrt(b*b-4*a*c))/2a System.out.println("此方程有两个解"); System.out.println("x1="+x1); System.out.println("x2="+x2); } else System.out.println("此方程无解");
程序完成!这是个很简单的程序,适合初学者练手,熟悉一下编程语言的基础语法,同时锻炼开发编程思维。
踩坑
这里还有一个坑,就是定义x1,x2的时候是可以用float的
但是如果你定义的时候用了float,那么在计算x1,x2的时候就要用到强制类型转换
double的精度比float更高,计算结果显示小数点后的位数更多
如果用float定义x1,x2,计算的时候却不用强制类型转换,那么编译器会报错
为什么会报错呢?x1,x2都是float型,delta也float型,怎么会出问题呢?是这样子的,我们这里使用了Math.sqrt()方法,这个方法计算出的结果是double类型,而x1,x2是float类型,低精度不能转成高精度,所以需要在前面加(float),把double转成精度更低的float。
在没有看源码之前,这只是我的猜测,当我看了JDK源码以后就证明了我的猜测是正确的,我可真是个小机灵鬼呢,哈哈哈……结尾
上面是我写的完整程序。至此,我们的程序的写完啦。觉得写得还可以的小伙伴可以点点收藏哦~
import java.util.Scanner; public class demo { public static void main(String[] args) { //一元二次方程的两个解 double x1; double x2; //一元二次方程的三个系数 //ax^2+bx+c=0 int a,b,c; //输入a,b,c的值 System.out.println("请依次输入一元二次方程a,b,c的值"); Scanner sc=new Scanner(System.in); a=sc.nextInt(); b=sc.nextInt(); c=sc.nextInt(); //delta是根 double delta=b*b-4*a*c; //x1=(-b+sqrt(b*b-4*a*c))/2a //x2=(-b-sqrt(b*b-4*a*c))/2a x1=(-b+Math.sqrt(delta))/2*a; x2=(-b-Math.sqrt(delta))/2*a; //判断delta的值 if(delta==0){ System.out.println("此方程有两个相同的解"); System.out.println("x1=x2="+x1); } else if(delta>0){ System.out.println("此方程有两个解"); System.out.println("x1="+x1); System.out.println("x2="+x2); } else System.out.println("此方程无解"); } }
本文章选自微信公众号onceCode
如果大家喜欢喜欢的话欢迎关注公众号
附上微信公众号链接
-
md5加密算法~Java语言实现
2020-12-08 16:07:50md5加密算法~Java语言实现 前言 密码是现在生活中非常常见的东西,平时使用QQ需要密码,使用微信需要密码,玩游戏等等很多地方都需要用到密码。 &... -
基于Java语言实现的的图片马赛克化
2020-07-06 10:47:13代码下载地址 原博客地址 介绍 可以是实现把图片进行模糊化(打上马赛克) 开发工具及环境等说明 1.支持Eclipse、IDEA、Maven等 2.只要有Java开发环境即可 功能 1.实现指定图片的马赛克模糊化 -
用java语言实现汉诺塔问题 (Java经典编程案例)
2019-06-24 14:29:44用递归实现汉诺塔问题,代码如下: import java.util.Scanner; /** * 汉诺塔问题 */ public class Example { public static void moveDish(int level, char from, char inter, char to) { if (level == 1) {// ... -
用JAVA语言实现赛马游戏
2018-03-22 21:55:28其中一个选题就是:用JAVA语言实现一个赛马游戏程序。此程序即为当时的参赛完成的程序。 程序界面风格在当时的情况下来看,算是比较美观的。但是,遗憾的是当时笔者对程序体系的认识有限,将数据库连接部分的代码... -
JAVA语言实现编译原理的LR分析过程模拟
2017-05-04 18:58:45通过JAVA实现SLR1的分析过程 -
java 实现国际化 中英文语言切换
2013-11-29 11:25:42java实现国际化中英文语言切换 java语言切换JSP国际化 java实现国际化中英文语言切换 java语言切换JSP国际化 -
/** * 测试类 */ public class TestStrategy { public static void main(String[] args) { Environment e = new Environment(new AddStrategy());//传入具体的策略类 int result =...
-
用Java语言实现二叉树的结点插入
2015-03-31 22:41:41用Java语言实现二叉树的节点插入 -
package cn.wja.model; public class BD09Point { private Double lat; private Double lon; public Double getLat() { return lat; } public void setLat(Double lat) { this.lat =...}
-
Java语言做一个简单的登陆界面实现用户名和密码的登陆以及界面之间的跳转
2019-04-14 21:59:02登陆界面的构想 在做登陆界面之前首先肯定是要对界面的进行布局构想,想这个界面到底有哪些元素构成,就拿下面的图来说吧 从这张图片中我们可以知道这登陆界面的组成需要到... java swing组件中的Jlabel、JTextF... -
2、Java实现堆栈(Stack)的方式
2018-08-28 22:37:272.请用Java实现堆栈(Stack)。 堆栈实现的三种方式: (1)通过数组实现一个堆栈; (2)通过集合实现一个堆栈; (3)通过两个队列实现一个堆栈。 示例代码: (1)通过数组实现一个堆栈: ... -
Java语言实现从oss(阿里云)服务器以附件形式下载文件(含批量下载)
2018-09-28 15:19:02笔者在项目中写一个从阿里云服务器上面以附件形式下载文件的接口时,遇到了问题,网上搜索无任何相关的解决方案,最后通过通过自己查阅API文档,再结合自己的经验,实现了下载功能。 通过查询oss官方文档,我发现... -
Java语言特点
2019-06-30 19:37:45Java语言是简单的 Java语言的语法与C语言和C++语言很接近,从某种意义上讲,它是由C和C++演变而来,使得大多数程序员很容易学习和使用。 对C++来说进行了简化和一定的提高,如:使用接口代替了复杂的多重继承以及...