1.计算空格,正负号个数
2.char型的数字---------->数字型 -'0'
//传入转化为整型数组的数组arr,最终的+-号endsigs public static int ArraysToNumbers(int []arr,int endsigs){//将整型数组转化为数字并最终输出带有正负号的数 int result=0; for(int i=0;i<arr.length;i++){ result=result*10+arr[i]; } return result*endsigs; } public static int[]countSign(String str){//计算空格,+,-的个数,并保存在整数数组 char[]arr=str.toCharArray(); int num0=0; int numz=0; int numf=0; for(int i=0;i<arr.length;i++){ if(arr[i]==' '){ num0++; } if(arr[i]=='+'){ numz++; } if (arr[i]=='-'){ numf++; } } int brr[]={num0,numz,numf}; return brr; } // 将字符串 转化为不带符号的整形数组 //str传入的字符串,sign存储的符号个数 public static int[]stringsToIntArray(String str,int[]sign) { char[]arr=str.toCharArray(); int num=0;; for(int i=0;i<sign.length;i++){ num+=sign[i]; } System.arraycopy(arr,num, arr, 0, arr.length-num);//拷贝空格之后的数字 arr= Arrays.copyOf(arr,arr.length-num); int []brr=new int[arr.length]; for(int j=0;j<arr.length;j++){ brr[j]=arr[j]-'0'; //将字符数组中的字符转化为数字 } return brr; } //计算最终的正负号 public static int endsigs(int[]arr){ int p=0; if(arr[2]%2==0){ p=1; } else{ p=-1; } return p; } public static void main(String[] args){ //String str=" ---123"; //String str="++-------12356"; String str="--- ++++5678"; int []sign=countSign(str); int[]brr=stringsToIntArray(str,sign); int sigs=endsigs(sign); int num=ArraysToNumbers(brr,sigs); System.out.println(num); }