【问题标题】:Split String Java Calculator拆分字符串 Java 计算器
【发布时间】:2015-10-21 14:42:31
【问题描述】:

我有这个代码

错误出现在关于 -、* 和 / 操作的 if 语句中“操作符 / 未定义参数类型 java.lang.String、java.lang.String”任何人都可以帮忙

【问题讨论】:

  • 当您尝试分割字符串时,您期望会发生什么?为什么?更一般地说,当您对字符串执行算术运算时,您期望会发生什么,为什么?我可能还建议对您的错误进行粗略的 Google 搜索,以获取有关为什么会发生这种情况以及如何修复它的一些提示。
  • 您必须解析字符串以检索数字。你可能想要使用类似int x = Integer.parseInt(parts[0]);
  • 您可能希望将其他两个字符串解析为数字。
  • @NikG Integer 不是此处使用的正确数据类型。
  • @tnw 根据提示字符串 (Enter your two numbers and the operation with spaces between e.g 8 9 -),整数可以正常工作。如果他想处理小数,那么他会使用 Double.parseDouble()。我只是给出快速而肮脏的例子 - 我作为评论而不是答案发布是有原因的。

标签: java string split calculator


【解决方案1】:

您必须解析每个部分才能对它们执行数学运算。您不能对字符串执行此类操作(但您可以使用“+”连接字符串,但不能使用 sum)。像这样的:

import java.util.Scanner;

public class Calculator {    
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in) ;
        System.out.println("Enter your two numbers and the operation with spaces between e.g 8 9 -");

        String calculation=scan.nextLine();

        String [] parts = calculation.split(" ");

        int part1 = Integer.parseInt(parts[0]);
        int part2 = Integer.parseInt(parts[1]);

        int answer;
        String operation = parts[2];
        switch (operation) {
            case "+":
                answer = part1 + part2;
                break;
            case "-":
                answer = part1 - part2;
                break;
            case "*":
                answer = part1 * part2;
                break;
            case "/":
                answer = part1 / part2;
                break;
            default:
                throw new IllegalStateException("Incorrect operation: " + operation);
        }

        String ans = String.valueOf(answer);
        System.out.println(ans);
    }    
}

如果你想打印错误的操作符号,你必须修改程序。首先,我们需要将整数 answer 变量初始化为“0”,并且您需要创建新的布尔变量来标记操作的正确性。

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in) ;
        System.out.println("Enter your two numbers and the operation with spaces between e.g 8 9 -");

        String calculation=scan.nextLine();

        String [] parts = calculation.split(" ");

        int part1 = Integer.parseInt(parts[0]);
        int part2 = Integer.parseInt(parts[1]);

        int answer = 0;
        boolean incorrectOperation = false;
        String operation = parts[2];
        switch (operation) {
            case "+":
                answer = part1 + part2;
                break;
            case "-":
                answer = part1 - part2;
                break;
            case "*":
                answer = part1 * part2;
                break;
            case "/":
                answer = part1 / part2;
                break;
            default:
                incorrectOperation = true;
        }

        String ans;
        if(incorrectOperation) {
            ans = "Incorrect operation: " + operation;
        } else {
            ans = String.valueOf(answer);
        }

        System.out.println(ans);
    }
}

【讨论】:

  • 效果很好!有什么方法可以使用“System.out.println”显示“错误操作”错误?
  • 一般不要使用整数进行除法或算术运算。这应该使用Doubles 或类似的东西。
  • @tnw 是的,我知道。但可能是 Zak 的任务意味着在这里使用整数进行算术运算。
【解决方案2】:

除了使用 Integer.parse(),为什么不在你的用例中使用scanner.nextInt()?

    int part1 = scan.nextInt();
    int part2 = scan.nextInt();
    String operation = scan.nextLine().trim();

【讨论】:

  • 我需要使用'System.out.println'来显示'​​throw new'
  • @ZakRatcliffe 你可以随心所欲地抛出新的......我相信你的教科书中有一章叫做“Java Exception”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-14
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多