写一个计算器,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现--零基础学习Java

前言

小白在观看零基础学习Java的视频中留意到了一份关于流程控制、Java方法综合实践的作业,就是标题的写一个计算器。

通过初步的实践笔者发现这确实是一个非常不错的作业,看上去十分简单但也能够充实地让我重新复习一遍前面所学到的知识并加以运用。

这是笔者学习视频的地址:【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili

(如有侵权,联系我后自删)

代码部分

考虑到有可能有同学和笔者一样刚学到这部分,所以直接先上个代码。

//计算器
//加减乘除
public class TestDemo {
    public static void main(String[] args) {
        System.out.println("请按照计算器方式逐个进行输入:");
        Scanner scanner = new Scanner(System.in);
        int[] numbers = new int[10];
        String[] sign = new String[10];
        double[] input = new double[10];
        int j = 0;
        int k = 0;
        while (true){
            int i = 0;
            if(scanner.hasNextInt()) {
                int temp = scanner.nextInt();
                if(ifNumber(temp)) {
                    numbers[i] = temp;
                    input[k] = 10*input[k]+numbers[i];
                    i++;
                }
            }else {
                sign[j] = scanner.next();
                if(sign[j]=="=")
                {
                    break;
                }
                if (ifSign(sign[j])) {
                        j++;
                        k++;
                } else {
                        break;
                }
​
            }
        }
        scanner.close();
        double temp = 0;
        for(int i = 0;i < j;i++) {
            System.out.print(input[i] + " " + sign[i] + " " + input[i+1]+" ");
            temp+= calculator(input[i],input[i+1],sign[i]);
        }
        System.out.println("= "+temp);
    }
    public static double calculator(double num1, double num2, String sign){
        double result = 0;
        switch (sign){
            case "+":
                result = add(num1,num2);
                break;
            case "-":
                result = minus(num1,num2);
                break;
            case "*":
                result = mul(num1,num2);
                break;
            case "/":
                if(num2==0){
                    System.out.println("无法计算");
                    break;
                }
                result = divide(num1,num2);
                break;
            default:
                System.out.println("无法计算");
        }
        return result;
    }
    public static double add(double num1, double num2){
        return num1+num2;
    }
    public static double minus(double num1, double num2){
        return num1-num2;
    }
    public static double mul(double num1, double num2){
        return num1*num2;
    }
    public  static double divide(double num1, double num2){
        return num1/num2;
    }
    public static boolean ifNumber(int num){
        switch (num){
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
            case 7:
            case 8:
            case 9:
                return true;
            default:
                return false;
        }
    }
    public static boolean ifSign(String sign){
        switch (sign){
            case "+":
            case "-":
            case "*":
            case "/":
            case ".":
                return true;
            default:
                return false;
        }
    }
}

思路部分

根据视频中推荐的思路,我决定通过main方法获取用户输入,通过Scanner交互完成,随后传参调用计算器方法再用switch分支来决定调用哪种运算法则完成运算,而加、减、乘、除这几个计算过程就通过计算器方法进行调用,最后输出结果。

初步实现计算器中笔者遇到最大的困难是如何完成用户交互,实际操作发现仅通过前面学习的知识想要一次性地从假设的目标语句“1+1=”中精准分离数字和符号十分困难,在前面学习的Scanner方法中没有单独分辨“+”,”=”的方法,而scanner.next()返回的类型是除了空白外的整个字符串。

因此笔者放弃整局的输入而改用了跟普通计算器一样逐个输入,在死循环while(true)中读取用户输入,如果读到0~9的整数就保存,读到非整数就跟提前保存的合法运算符进行对比,符合就保留不符合就不保存,读到“=”就结束循环。

除此之外这个运算器的实现也没有什么难点就不逐一说明了。

部分结果展示

 

总结

这是笔者第一次用博客记录自己的学习成果,更多的是想与同样处于基础学习的同学们分享一下自己通过这个小作业所学习到的一些点。不过由于笔者没有养成习惯,写的代码基本没有注释十分抱歉。

这个计算器的代码十分简陋,有许多诸如多元运算,小数点,负数为首的情况尚未完善,望谅解。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来给您实现一个简单的Java计算器,包含加、减、乘、除、平方和立方功能,并且能够循环接收数据。以下是代码: ```java import java.util.Scanner; public class Calculator { public static void main(String[] args) { Scanner input = new Scanner(System.in); boolean loop = true; while (loop) { System.out.println("请选择要进行的计算:"); System.out.println("1. 加法"); System.out.println("2. 减法"); System.out.println("3. 乘法"); System.out.println("4. 除法"); System.out.println("5. 平方"); System.out.println("6. 立方"); System.out.println("0. 退出"); int choice = input.nextInt(); switch (choice) { case 1: System.out.print("请输入第一个数:"); double num1 = input.nextDouble(); System.out.print("请输入第二个数:"); double num2 = input.nextDouble(); System.out.println("计算结果为:" + (num1 + num2)); break; case 2: System.out.print("请输入第一个数:"); double num3 = input.nextDouble(); System.out.print("请输入第二个数:"); double num4 = input.nextDouble(); System.out.println("计算结果为:" + (num3 - num4)); break; case 3: System.out.print("请输入第一个数:"); double num5 = input.nextDouble(); System.out.print("请输入第二个数:"); double num6 = input.nextDouble(); System.out.println("计算结果为:" + (num5 * num6)); break; case 4: System.out.print("请输入第一个数:"); double num7 = input.nextDouble(); System.out.print("请输入第二个数:"); double num8 = input.nextDouble(); if (num8 == 0) { System.out.println("除数不能为0!"); } else { System.out.println("计算结果为:" + (num7 / num8)); } break; case 5: System.out.print("请输入一个数:"); double num9 = input.nextDouble(); System.out.println("计算结果为:" + (num9 * num9)); break; case 6: System.out.print("请输入一个数:"); double num10 = input.nextDouble(); System.out.println("计算结果为:" + (num10 * num10 * num10)); break; case 0: loop = false; System.out.println("感谢使用,再见!"); break; default: System.out.println("输入错误,请重选择!"); break; } } } } ``` 运行程序后,会出现一个选项菜单,用户可以选择需要进行的计算。如果选择了加、减、乘、除、平方或立方,程序会提示用户输入相应的数字,然后输出计算结果。如果选择了退出,程序会结束。 希望这个简单的Java计算器能够满足您的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值