【问题标题】:Trying to program a calculator using methods [duplicate]尝试使用方法对计算器进行编程[重复]
【发布时间】:2021-04-19 06:25:17
【问题描述】:

我是 java 新手,正在尝试使用方法创建一个简单的计算器。我知道这并不完美,但我正在尝试获取一个字符串,将其转换为双精度数,然后进行加法、减法等。这就是我到目前为止所做的......代码运行......但它抛出了一个奇怪的非法异常,说“+”是一个悬空修饰符。我的问题是为什么?这似乎可行....但显然不行。

代码:

import java.util.Scanner;
public class calculator4 {
    
    public static void main(String [] args){
        double sum;
        double subtract;
        double multi;
        double dividend;
        String problem;
        System.out.println("This is a program designed to perform basic calculator functions.");
        System.out.println("Please enter a problem using the following operations:");
        System.out.println("For addition, use +.");
        System.out.println("For subtraction, use -.");
        System.out.println("For multiplication, use *");
        System.out.println("For division, use /.");
        System.out.println("These are the only accepted values.");
        System.out.println("Please enter your problem:");
        Scanner scnr = new Scanner(System.in);
        problem = scnr.nextLine();
        if(problem.contains("+")){
            String [] part = problem.split("+");
            String part1 = part [0];
            String part2 = part [1];
            double add1 = Double.parseDouble(part1);
            double add2 = Double.parseDouble(part2);
            sum = add1 + add2;
            
        }
        else if(problem.contains("-")){
            String [] part = problem.split("-");
            String part1 = part [0];
            String part2 = part [1];
            double subtract1 = Double.parseDouble(part1);
            double subtract2 = Double.parseDouble(part2);
            subtract = subtract1 - subtract2;
        }
        else if(problem.contains("*")){
            String [] part = problem.split("*");
            String part1 = part [0];
            String part2 = part [1];
            double multi1 = Double.parseDouble(part1);
            double multi2 = Double.parseDouble(part2);
            multi = multi1 * multi2;

        }
        else if(problem.contains("/")){
            String [] part = problem.split("/");
            String part1 = part [0];
            String part2 = part [1];
            double dividend1 = Double.parseDouble(part1);
            double dividend2 = Double.parseDouble(part2);
            dividend = dividend1 * dividend2;
        }
    }
        public double addition(double sum){
            return sum;
        }
        public double subtraction(double subtract){
            return subtract;
        }
        public double multipliation(double multi){
            return multi;
        }
        public double division(double dividend){
            return dividend;
        }
        calculator4 addition = new calculator4();
        calculator4 subtraction = new calculator4();
        calculator4 multiplication = new calculator4();
        calculator4 division = new calculator4();
        

    }

【问题讨论】:

  • 使用 Java 命名约定将使您的代码更易于阅读。类的名称应以大写字母开头。所以Calculator4,而不是calculator4
  • 正确格式化您的代码示例。要么全部缩进,要么用四个空格字符,或者用一对三个反引号括起来。
  • 是的!非常感谢!
  • 以后发帖前,先搜索自己的错误信息。

标签: java


【解决方案1】:

它将加号解释为元字符。尝试用“\”转义“+”,例如:

if(problem.contains("\\+")){
   ...
}

您也必须使用双反斜杠来转义反斜杠本身。

这也适用于其他操作数(例如 -、*、)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-28
    • 2014-04-23
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 2014-08-06
    相关资源
    最近更新 更多