本帖最后由 笃行呀 于 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); //输出因为敲这道题之前本人自己也是一知半解,睡前在床上敲了一会就瓶颈了,晚上思来想去,第二天起床我的室友一语点醒了我,所以有感而发...在此,小弟献丑了,望各路大神不舍赐教!!!
|
|