函数最后题,哪里错了

package Eric;

import java.util.Scanner;

public class 函数 {

    private static char[] c;

    public static void hanshu(int z,String[] str) {
        int d = 0;
        for(int i = 0; i < str.length; i++) {
            int a1;
            a1 = str[i].indexOf('+');   
        if (a1 != -1) {
            String marksStr1 = str[i].substring(a1-1);
            String marksStr2 = str[i].substring(a1+1);
            int a;
            a = Integer.parseInt(marksStr1);
            int b;
            b = Integer.parseInt(marksStr2);
            int c = a + b;  
            int e = c;
            d = e + c;
            }
        }
        System.out.println(d);
        for(int i = 0; i < str.length; i++) {
            int a2;
            a2 = str[i].indexOf('*');   
        if (a2 != -1) {
            String marksStr1 = str[i].substring(a2-1);
            String marksStr2 = str[i].substring(a2+1);
            int a;
            a = Integer.parseInt(marksStr1);
            int b;
            b = Integer.parseInt(marksStr2);
            int c = a * b;  
            int e = c;
            d = e * c;
          }
        }
        System.out.println(d);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int z = in.nextInt();
        String[] str = new String[z+z-1];
        for(int i = 0; i < str.length; i++) {
         str[i] = in.next();
        }
        hanshu(z, str);
    }

}

4 条评论

  • @ 2019-05-28 20:13:13

    请你也回答一下,字符串,字符,字符串数组,字符数组的区别@aike

    • @ 2019-05-28 20:22:19

      罗老师棒棒哒!

    • @ 2019-05-28 20:28:18

      字符串是'一个字符''一个字符' 这个叫做字符串
      字符是'字符'
      字符串数组是['一个字符''两个字符']['一个字符''两个字符''三个字符''四个字符']
      字符数组是['一个字符']['一个字符'] @lizilita

      我是这么理解的

    • @ 2019-05-28 20:36:49

      @
      aike
      : 字符串:"println"
      字符:'p'
      字符串数组:【"println"】 【"println"】
      字符数组:【'a'】【'b'】

  • @ 2019-05-28 19:37:08

    你说的没错,你的代码就是运行到第15行就崩溃的。不过找错误的时候,得往前看。在15行之前,你可能就犯了一些小错误了。

    提示:在你的函数参数里面,str不是一个字符串,而是一个字符串数组(一堆字符串)!

  • @ 2019-05-28 17:27:18

    当你输入

    3
    1 + 2 + 3
    

    程序运行到第13行

    a1 = str[i].indexOf('+');
    

    之后,a1等于0,第15行的substring(a1-1)就成了substring(-1)。但是数组并没有-1这个位置,所以越界了。你可以debug一下,想想为什么会出现-1。

    • @ 2019-05-28 19:03:10

      我现在觉得我的代码在第十五行就错了,假如400 + 100,a1-1,a1+1 就是0+1呀,这里我也不知道怎么写?????????????????????????

  • @ 2019-05-27 20:54:42

    请附上你的错误信息,不然我无法重现你的错误呀

    • @ 2019-05-28 12:45:06

      3
      1 + 2 + 3
      Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
      at java.base/java.lang.String.substring(String.java:1837)
      at Eric.函数.hanshu(函数.java:15)
      at Eric.函数.main(函数.java:52)
      这个是输出结果

  • 1