“必须是数组类型,但解析为字符串”....为什么以及如何解决它?

时间:2014-04-10 15:41:04

标签: java arrays string

我应该创建一个基本上充当运算符+, - ,*,/和%的计算器的代码。我已经发布了以下代码。

import java.util.Scanner; 公共类TestCode {

 public static void main(String[] args) {

        Scanner input = new Scanner(System.in); 
        System.out.println("Enter an operation: "); 

        String userOperation = input.nextLine(); 

        if (userOperation.length() != 3) {
          System.out.println(
            "Usage: java Calculator \"operand1 operator operand2\"");
          System.exit(0);
        }

        // The result of the operation
        int result = 0;

        // Split items from a string 
        String[] tokens = userOperation[0].split(""); <===== Error line 

        // Determine the operator
        switch (tokens[1].charAt(0)) {
          case '+': result = Integer.parseInt(tokens[0]) +
                             Integer.parseInt(tokens[2]);
                    break;
          case '-': result = Integer.parseInt(tokens[0]) -
                             Integer.parseInt(tokens[2]);
                    break;
          case '*': result = Integer.parseInt(tokens[0]) *
                             Integer.parseInt(tokens[2]);
                    break;
          case '/': result = Integer.parseInt(tokens[0]) /
                             Integer.parseInt(tokens[2]);
        }

        // Display result
        System.out.println(tokens[0] + ' ' + tokens[1] + ' ' 
          + tokens[2] + " = " + result);
      }

}

我已经尝试了几乎所有我能想到的东西。我需要做些什么来改变它,为什么它目前无法正常工作?谢谢!!!

2 个答案:

答案 0 :(得分:2)

userOperation是一个字符串:

String userOperation = input.nextLine(); 

您稍后将其视为数组:

userOperation[0]

你做不到。如果要从Java中的String中获取特定字符,请执行以下操作:

char c = userOperation.charAt(0);

SIDENOTE :我不确定您使用此.split(""); 完全 ,但我认为您应该可能会更仔细地将你的String分成标记(可能是通过正则表达式)。

答案 1 :(得分:0)

尝试:

userOperation.split("")

userOperation是一个简单的字符串,而不是数组,因此您无法使用[]访问它。