substring数组越界_请检查是否存在数组越界非法访问等情况

请检查是否存在数组越界非法访问等情况

case通过率为90.00%

请各位大牛帮忙看下,下面代码为什么会提示 “请检查是否存在数组越界非法访问等情况 case通过率为90.00%”。

代码功能为算式计算,输入格式为:

(OP P1 P2)

其中,P1和P2为整数或者算式,OP表示计算操作,支持add(加)、sub(减)、mul(乘)、div(除)操作。例如:

(add 3 -7)=-4,(add 3 (add 3 -7))=-1;

(sub 3 -7)=10,(sub (sub 3 -7) -7)=17;

(mul 3 -7)=-21,(mul 3 (mul 3 -7))=63;

(div 7 3)=2,(div 7 (div 7 3))=3。

代码如下

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner scanner =null;

String input =null;

int result =0;

scanner =new Scanner(System.in);

while(scanner.hasNextLine()) {

input = scanner.nextLine();

result = operate(input);

System.out.println(result);

}

scanner.close();

}

private static int operate(String order) {

int result =0;

int paraFirst =0, paraSecond =0;

int splitIndexFirst = -1, splitIndexSecond = -1;

String[] orderArray =null;

orderArray =newString[3];

if(order !=null&& order.startsWith("(") && order.endsWith(")")){

order = order.substring(1, order.length()-1);

splitIndexFirst = order.indexOf(" ");

orderArray[0] = order.substring(0, splitIndexFirst);

order = order.substring(splitIndexFirst+1);

splitIndexSecond = lengthEle(order);

orderArray[1] = order.substring(0, splitIndexSecond);

orderArray[2] = order.substring(splitIndexSecond+1);

if(orderArray[1] !=null&& orderArray[1].startsWith("(")){

paraFirst = operate(orderArray[1]);

}else{

paraFirst = Integer.valueOf(orderArray[1]);

}

if(orderArray[2] !=null&& orderArray[2].startsWith("(")){

paraSecond = operate(orderArray[2]);

}else{

paraSecond = Integer.valueOf(orderArray[2]);

}

if("add".equalsIgnoreCase(orderArray[0])){

result = paraFirst + paraSecond;

}else if("sub".equalsIgnoreCase(orderArray[0])){

result = paraFirst - paraSecond;

}else if("mul".equalsIgnoreCase(orderArray[0])){

result = paraFirst * paraSecond;

}else if("div".equalsIgnoreCase(orderArray[0])){

result = paraFirst / paraSecond;

}

}

return result;

}

private static int lengthEle(String data) {

int result = -1;

int dataLen = -1, deep =0;

boolean flag =true;

char[] dataArray =null;

if(data !=null){

dataArray = data.toCharArray();

dataLen = dataArray.length;

if(data.startsWith("(")){

for(int index =0; flag && index < dataLen; index++){

if("(".equalsIgnoreCase(String.valueOf(dataArray[index]))){

deep++;

}else if(")".equalsIgnoreCase(String.valueOf(dataArray[index]))){

deep--;

}

if(deep ==0){

result = index+1;

flag =false;

}

}

}else{

for(int index =0; flag && index < dataLen; index++){

if(" ".equalsIgnoreCase(String.valueOf(dataArray[index]))){

result = index;

flag =false;

}

}

}

}

return result;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值