算术表达式文本解析和运算

内容纲要

需求描述

Write a Java program that calculates expressions such as 8+9 and 3.14 5.1. The expressions are to be typed in from the console by the user. The input always consists of a number, followed by an operator, followed by another number. The operators that are allowed are+, -, , and /. Your program should read an expression, print its value, read another expression, print its value, and so on. The program should end when the user enters 0 as the first number on the line.

编写一个 Java 程序来计算 8+9 和 3.14 5.1 等表达式。
表达式由用户从控制台输入。
输入始终包含一个数字,后跟一个运算符,最后跟另一个数字。
允许的运算符有+、-、
和/。
您的程序应该读取一个表达式,打印其值,读取另一个表达式,打印其值,等等。
当用户输入 0 作为该行的第一个数字时,程序应该结束。

解决方案

这是一个相对直接的问题,我们可以通过Java的Scanner类从控制台获取用户输入,然后解析和计算表达式。但是这个问题的关键在于如何处理错误输入和异常情况,例如:非法的操作符,除以零等。

这是一个基本的实现,你可以在此基础上进行优化:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("请输入一个表达式,例如 8+9,3.14*5.1。输入以数字0开始的表达式将退出程序。");

            double num1 = scanner.nextDouble();
            if (num1 == 0) {
                System.out.println("程序结束。");
                break;
            }

            char operator = scanner.next().charAt(0);
            double num2 = scanner.nextDouble();
            double result;

            switch (operator) {
                case '+':
                    result = num1 + num2;
                    break;
                case '-':
                    result = num1 - num2;
                    break;
                case '*':
                    result = num1 * num2;
                    break;
                case '/':
                    if (num2 != 0) {
                        result = num1 / num2;
                    } else {
                        System.out.println("错误:除数不能为0。");
                        continue;
                    }
                    break;
                default:
                    System.out.println("错误:未知的操作符 " + operator + "。");
                    continue;
            }

            System.out.println("表达式的结果是: " + result);
        }

        scanner.close();
    }
}

这段程序首先从控制台读取一个数字,如果该数字是0,那么程序将停止运行。然后程序读取一个操作符和另一个数字,并根据操作符进行相应的计算。注意,我们在除法操作中检查了除数是否为0,以防止除以零的错误。

这段程序还没有处理用户输入的错误,例如:如果用户输入的不是数字或者允许的操作符,程序将抛出异常。在实际应用中,你可能需要添加更多的错误检查和处理代码。

时间复杂度:O(1),程序的运行时间与输入的表达式的数量无关。 空间复杂度:O(1),程序的空间使用与输入的表达式的数量无关。

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward