A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 笃行呀 于 2019-2-13 11:17 编辑

//计算一个嵌套的子列表结构中多个数字的总和
//[1, [2, [3, 4], 5], 6, [7, 8]]本题来自其他帖子,因为个人喜欢找点题目敲敲,敲完有感,所以在此分享给大家话不多说,上代码:String s = "[1, [2, [3, 4], 5], 6, [7, 8]]";                  //首先按题目要求把这个字符串定义出来
String st = "";              //这个是用来接收被挑出来的字符重新组成字符串,后面重新对它进行处理
for (int i = 0; i < s.length(); i++) {               //用for循环把这个字符串全部遍历出来,然后挑出其中的数字字符
      if (s.charAt(i) >= '0' && s.charAt(i) <= '9') { //这个判断就是挑出字符串中的数字字符,用到了字符本身储存在计算机中对应的有一个数字的知识,">=","<="本身就是二 元运算符,所以在这里判断字符串中的字符是否是0-9的数字字符,中间存在着一个数据类型的转换,所以可以  这样写,ASCII码表中有对应的字符代表的数字,不熟悉的童鞋可以去了解一下             st += s.charAt(i);     //这里就是之前创建的空字符串,然后累加,字符串之间的"+"号是一种连接,每次的连接,"加等于"都相当于把连接之后新的字符串重新赋值给"st"   
      }
}
byte[] arr = st.getBytes();         //这里用到字符串的一个方法,可以通过JDK_API查询,就是把一个字符串转化为一个byte数组,里面的元素是字符串中每个字符元素对应的数值
int num = 0;                           //创建一个变量,用来接收题意中说的所有数字的和
for (int i = 0; i < arr.length; i++) {          //遍历byte数组中所有的元素,每个元素都是原先数字字符对照ASCII码表中的数值
       int n = arr-'0';                        //"="右边的是遍历出来的数字字符对照ASCII码表中的数值,0-9因为是连着的,所以用数字字符数值减去字符'0',那么得到的就是这个数字字符本身的数值
        num += n;                             //这里把它们累加起来
}
System.out.println("这串字符串中数字的总和是:" + num);            //输出因为敲这道题之前本人自己也是一知半解,睡前在床上敲了一会就瓶颈了,晚上思来想去,第二天起床我的室友一语点醒了我,所以有感而发...在此,小弟献丑了,望各路大神不舍赐教!!!



1 个回复

倒序浏览
排列发出来很有问题,  有兴趣的复制出去试试看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马