#dart刷题系列第一期
1. l1 = [1,2,3,4,5,11],计算l1内所有数字的总和
void main(){
List l1 = <int> [1,2,3,4,5,11];
int a = 0;
for (int i=0;i<l1.length;i++){
int b = l1[i];
a += b;
}
print(a);
}
计算总和,但是所有的元素都在列表里面,所以第一步是得把元素提取出来,而后再把他们加起来
所以第一步是遍历循环,第二步则是全部加到一个数里面
以上,为第一题的全部原理
2. 加减乘除的计算,a = 10 , b = 5 ,利用函数计算a+b,a-b,a*b,a/b
Suanshu(a,b,c){
if (c == "+"){
return a + b;
} else if (c == "-"){
return a - b;
} else if (c == "*"){
return a * b;
} else if (c == "/"){
return a / b;
}
}
void main(){
print(Suanshu(10,5,"+"));
print(Suanshu(10,5,"-"));
print(Suanshu(10,5,"*"));
print(Suanshu(10,5,"/"));
}
由于是计算,所以很容易想到三个元素,两个数,以及符号,那么作为计算器,自然应该是要输入三个元素,当然,由于是简易计算器,所以这里没有给如果符号不在c的时候该怎么办
然后函数创造出来后,直接调用,以上,为第二题的全部逻辑
3. 数据分类
小明有一堆数据,但是数据太多,小明不知道如何快速的分类下数据,请你帮帮他:
数据:111,32,34,24,2454,23,23433,34,234,11,43,234,3354,23,232,4343,3333544,1,11,1,322,3,4,5,23,343,43,2,3,343434,123
分类要求:一位数,两位数,三位数,四位数,五位数及以上
输出:每个类型有多少数字?
void main(){
List l0 = [111,32,34,24,2454,23,23433,34,234,11,43,234,3354,23,232,4343,3333544,1,11,1,322,3,4,5,23,343,43,2,3,343434,123];
List l1 = [];
List l2 = [];
List l3 = [];
List l4 = [];
List l5 = [];
shuaixuan(l0,l1,l2,l3,l4,l5);
print(l1);
print(l2);
print(l3);
print(l4);
print(l5);
}
shuaixuan(List l,a,b,c,d,e){
for (int i = 0; i< l.length; i++){
if (l[i] ~/ 10 == 0){
a.add(l[i]);
} else if (l[i] ~/ 100 == 0){
b.add(l[i]);
} else if (l[i] ~/ 1000 == 0){
c.add(l[i]);
} else if (l[i] ~/ 10000 == 0){
d.add(l[i]);
} else {
e.add(l[i]);
}
}
}
由于是按照位数分类,那么这是第一个要解决的问题,该如何分类?
由于差异是位数不同,所以我们必须从这里入手,位数不同,什么不同呢?
我们可以想到,有两种方式,一种是因为位数的不同,那么长度就不同,所以可以根据长度不一样,来进行分类
但是这是好方法吗?这里虽然可以解决问题,但是如果有小数,那不就不行了吗?所以,我们得找一个更好的方法,从而可以彻底解决这类的问题
那么在所有的计算方法中,很明显加法减法乘法除法都不太行,但是整除?整除似乎是可以的,对于任何一个n位数,整除n+1位的数结果都是0,但是整除的数字达到n+1位,那么就不是0,这里就是一个突破口
因此,可以根据这个突破口,设计函数,从而实现要求,以上,是第三题的全部解析