20170803 - 今日技能封装 - A
1 如何生成0-0.99999的随机小数?使用其生成0-1000的随机数需注意什么?
Math.random(),生成后*1000,再强转。(int强转会抹掉小数位)
2 while的语法是?
while(循环条件){
}
3 如何跳出while循环?
break;
4 循环三要素有哪些?
初始化循环变量;循环的条件;变量的变化方式。
5 循环的关键在于?三要素的关键在于?循环10次,每次变量a加1,结果与循环变量是什么?
在于循环三要素,三要素理清后,选择什么架构都可以,只是语法上的不同而已。
在于找到真正的循环变量。
循环变量是次数,结果是a
5.5 累加1-100的是?
每次的累加和而不是1,2,3
6 循环结构有?区别是?如何选择?
do...while;while;for;
while:先判断,后执行
do...while:先执行,后判断
//
初始化循环变量及变化相同则适合do...while
固定次数相同的情况适合for
先看次数,再看变化。
7 Java中else..if分支结构,可以省略else吗?
可以
8 Java中定义了类型后后续还可以改变吗?
不可以,除非重新定义并强转
9 下例输出的是浮点数还是整型?
double num = Math.random();
num *= 1000;
num = (int)(num+1);
浮点数。
10 do...while结构内do部分为什么?
相当于将第一要素及第三要素同时定义,因此适用于第一要素及第三要素相同的情况。
11 循环中的循环体是什么?
除变量变化以外的循环代码块
12 do..while的语法是?
do{
初始化循环变量(变量变化的方式)
循环体
}while(循环的条件);
13 for循环的语法是?
for(初始化变量;循环条件;循环变量变化的方式){
循环体
}
14 for循环中,三要素如何设置多条件?
(i = 6,j = 1;i < 2 && j == 2;i += 1,j += 2)
15 如何跳出当前循环?如何调出整个循环?
continue,break
16 如何优化代码量?
可以用if的用if,再不行用三目,再不行用else if.
17 升序算法是?a,b,c,d如何排序?
关键点:比大小,大则交换数值,从而保证比较数值为最大.
方法为,
a与b比,a与c比,a与d比,
b与c比,b与d比,
c与d比,
交换算法:设置中转变量t
t=a;
a=b;
b=t;
18 for循环中定义的变量是什么变量?如果是局部变量,如何使其的值能够传递出来?
局部变量,在外部先定义并赋值(必须,因为有可能不进入for循环,不赋值在使用时会报错),使其变成全局变量.
19 如何生成0-99的随机数?
int a = (int)(Math.random() * 100)
int强转,会直接去掉小数位.
21 编写算法的技巧:for循环,结果与上次相关的,如何编写算法?
找到真正的变量.
有数列为:9,99,999,...,9999999999。要求使用程序计算此数列的和
显然,计算10次,每次用上次的值加本次的值,如第三次,则为999
设计算法时,卡在了计算本次的值上,由于限定了不可用幂方函数,只能从该次值与上次值关系入手.
9
99
999
显然
9 = 10 - 1
99 = 100 - 1
999 = 1000 - 1
再理清思路,可见1为常量(变量不用理会,要找的是变量和变量的关系),而左边的值又为结果,因此要找出的关系的两个变量便是上一次值与10,100,1000
于是易得出,
方式1,
除第一次外,本次值 = (上一次总和+1) * 10 - 1,
本次总和 = 本次值 + 上和
方式2,
本次值 = 10 乘以 当此次数 - 1;
理清思路理清思路理清思路
//关键步骤,需要想到可以用上一步骤得到的结果用来交互得出该步所需变量,而不是想着直接10乘以该次的幂方
package Day04;
public class addition9 {
public static void main(String[] args) {
//for循环10次
//循环变量是次数
//变体是10的乘等
long ten = 10;
long result = 0;
int num = 0;
long value = 0;
for(int times = 1;times <= 10;times++){
//每次乘等于10,每次ten的值都比上一轮大一个级别
value = ten - 1;
System.out.println(ten);
ten = ten * 10;//关键步骤,需要想到可以用上一步骤得到的结果用来交互得出该步所需变量,而不是想着直接10乘以该次的mi'fang
result = value + result;
}
System.out.println(result);
}
}
public class SumOfSeq {
public static void main(String[] args) {
// 数列求和
long nine = 9;
long result = nine;
for (int i = 2; i <= 10; i++) {
nine = nine * 10 + 9;
result += nine;
}
System.out.println("9+99+999+...+9999999999=" + result);
}
}
1 如何生成0-0.99999的随机小数?使用其生成0-1000的随机数需注意什么? | |
Math.random(),生成后*1000,再强转。(int强转会抹掉小数位) | |
2 while的语法是? | |
while(循环条件){ | |
} | |
3 如何跳出while循环? | |
break; | |
4 循环三要素有哪些? | |
初始化循环变量;循环的条件;变量的变化方式。 | |
5 循环的关键在于?三要素的关键在于?循环10次,每次变量a加1,结果与循环变量是什么? | |
在于循环三要素,三要素理清后,选择什么架构都可以,只是语法上的不同而已。 | |
在于找到真正的循环变量。 | |
循环变量是次数,结果是a | |
5.5 累加1-100的是? | |
每次的累加和而不是1,2,3 | |
6 循环结构有?区别是?如何选择? | |
do...while;while;for; | |
while:先判断,后执行 | |
do...while:先执行,后判断 | |
// | |
初始化循环变量及变化相同则适合do...while | |
固定次数相同的情况适合for | |
先看次数,再看变化。 | |
7 Java中else..if分支结构,可以省略else吗? | |
可以 | |
8 Java中定义了类型后后续还可以改变吗? | |
不可以,除非重新定义并强转 | |
9 下例输出的是浮点数还是整型? | |
double num = Math.random(); | |
num *= 1000; | |
num = (int)(num+1); | |
浮点数。 | |
10 do...while结构内do部分为什么? | |
相当于将第一要素及第三要素同时定义,因此适用于第一要素及第三要素相同的情况。 | |
11 循环中的循环体是什么? | |
除变量变化以外的循环代码块 | |
12 do..while的语法是? | |
do{ | |
初始化循环变量(变量变化的方式) | |
循环体 | |
}while(循环的条件); | |
13 for循环的语法是? | |
for(初始化变量;循环条件;循环变量变化的方式){ | |
循环体 | |
} | |
14 for循环中,三要素如何设置多条件? | |
(i = 6,j = 1;i < 2 && j == 2;i += 1,j += 2) | |
15 如何跳出当前循环?如何调出整个循环? | |
continue,break | |
16 如何优化代码量? | |
可以用if的用if,再不行用三目,再不行用else if. | |
17 升序算法是?a,b,c,d如何排序? | |
关键点:比大小,大则交换数值,从而保证比较数值为最大. | |
方法为, | |
a与b比,a与c比,a与d比, | |
b与c比,b与d比, | |
c与d比, | |
交换算法:设置中转变量t | |
t=a; | |
a=b; | |
b=t; | |
18 for循环中定义的变量是什么变量?如果是局部变量,如何使其的值能够传递出来? | |
局部变量,在外部先定义并赋值(必须,因为有可能不进入for循环,不赋值在使用时会报错),使其变成全局变量. | |
华为 | |
19 如何生成0-99的随机数? | |
int a = (int)(Math.random() * 100) | |
int强转,会直接去掉小数位. | |
20 死叉 | |
21 编写算法的技巧:for循环,结果与上次相关的,如何编写算法? | |
找到真正的变量. | |
有数列为:9,99,999,...,9999999999。要求使用程序计算此数列的和 | |
显然,计算10次,每次用上次的值加本次的值,如第三次,则为999 | |
设计算法时,卡在了计算本次的值上,由于限定了不可用幂方函数,只能从该次值与上次值关系入手. | |
9 | |
99 | |
999 | |
显然 | |
9 = 10 - 1 | |
99 = 100 - 1 | |
999 = 1000 - 1 | |
再理清思路,可见1为常量(变量不用理会,要找的是变量和变量的关系),而左边的值又为结果,因此要找出的关系的两个变量便是上一次值与10,100,1000 | |
于是易得出, | |
方式1, | |
除第一次外,本次值 = (上一次总和+1) * 10 - 1, | |
本次总和 = 本次值 + 上和 | |
方式2, | |
本次值 = 10 乘以 当此次数 - 1; | |
理清思路理清思路理清思路 | |
//关键步骤,需要想到可以用上一步骤得到的结果用来交互得出该步所需变量,而不是想着直接10乘以该次的幂方 | |
package Day04; | |
public class addition9 { | |
public static void main(String[] args) { | |
//for循环10次 | |
//循环变量是次数 | |
//变体是10的乘等 | |
long ten = 10; | |
long result = 0; | |
int num = 0; | |
long value = 0; | |
for(int times = 1;times <= 10;times++){ | |
//每次乘等于10,每次ten的值都比上一轮大一个级别 | |
value = ten - 1; | |
System.out.println(ten); | |
ten = ten * 10;//关键步骤,需要想到可以用上一步骤得到的结果用来交互得出该步所需变量,而不是想着直接10乘以该次的mi'fang | |
result = value + result; | |
} | |
System.out.println(result); | |
} | |
} | |
public class SumOfSeq { | |
public static void main(String[] args) { | |
// 数列求和 | |
long nine = 9; | |
long result = nine; | |
for (int i = 2; i <= 10; i++) { | |
nine = nine * 10 + 9; | |
result += nine; | |
} | |
System.out.println("9+99+999+...+9999999999=" + result); | |
} | |
} |