该用户从未签到
|
1. while: Y( i6 }5 z9 ?+ \
While 循环控制
5 H3 T# o0 u9 E: x& Z7 U1 c9 u* s2 h0 {1 X" M* k8 O% ]! {% w0 }
Scanner console = new Scanner(System.in);) }/ _/ m9 ~ J9 c" ]& d( ~4 U
while(布尔表达式){
6 G4 R. _" g* L+ A: c1 | qty = console.nextInt();% U* @- T m. x( b ]1 Q
if(qty>0 && qty<=5){ //五个以内# e0 g) l8 _1 ]+ E7 [: k
break; //打断, 打断当前循环
5 q/ w- F& Y$ D( E4 ] \, f2 I }
8 q- x3 ~( N2 T3 r2 y8 T: b }5 H( v7 @- E1 m
. I: u: X9 F/ |! ~) e
2. for 循环(主要用于几次的循环)
+ J# W2 |9 V6 G0 L1 z 循环控制8 P [( Z& q" L( L7 V& B) T4 a
for(初始化表达式;布尔表达式; 递增表达式){& j& T2 B* L6 P+ c2 [0 J8 v
//循环体2 I5 _4 m& N6 u2 U
}
3 G4 G m. ^' l9 W for(;;){. q( M4 M, p8 C! H- f
}
+ Y3 ]7 W. ^. d" p; G for(int a=1, b=3;;){
: p$ g2 O/ \1 T+ h7 r+ {# P }
; B/ e2 v$ M! v* X( M. R6 \' B
1 [9 u ~, b7 c* W+ K6 U0 v1 i% s, o [% C
Example:
- z3 M0 e# c6 h8 O# ^, {8 r2 h for (int i = 0; i < array.length; i++){
! Y) T m& {2 g8 R2 r System.out.println(i);
% E% B) v" X/ R6 M* W6 Q }
+ u3 [/ B4 W; j8 ]0 }5 v; h
% r( Y+ V) m. L/ y, A; L) w3. do ... while
+ J3 E0 K$ {# B, F do ... while() 循环控制
& a0 B8 M& [9 R$ W' d5 Q/ G% c: ~3 h do{
7 e4 q9 E3 v1 a7 W( H //循环体
: G: P0 ]/ \8 |! c }while(布尔表达式);1 v! T1 o1 U# J
Example:
6 {' }" m8 n$ Q% n3 {% D7 l3 Z do{
' ^' M% R: r/ ?! P System.out.print("输入押注数量:");$ d6 O9 P- }* y6 g3 @! n$ p8 p' C
bet = console.nextInt();
. F: I' U* P8 }* A! F! V }while(bet <= 0 || bet > balance); //否定条件
" D) I* ~6 i1 e0 A, B
3 Z' b; Y0 ~% ]- D+ }4. java Array
& u8 H) ~( R. q" J- G; u9 Q 1) 数组变量的声明
; N; o m/ C3 f8 g' [4 @ int[] ary; 声明了数组变量 ary, 数组变量是代词,6 K( G1 t7 L! d% z' r$ l
int ary[]; 为了与C语法兼容的写法, 不建议写法,. P7 f7 ?' Z5 l( X1 a. g
0 f3 U7 }+ F. |; z7 w3 F$ T
2) 数组对象动态初始化
3 F8 V5 \! e7 o6 a+ \9 q ary = new int[4]; //数组变量引用了具体数组对象, 就是代词. x: D: x& ~+ w6 _( ]: |" w2 r
指代了具体事务.$ I {* q1 J. O" X5 D
数组元素是自动初始化的, 自动初始化为"零"值.
! T0 N8 [5 ]" X: N6 ~1 T1 l! }; R' s "零"值: 0, 0.0, \u0000, false, null q" ?: s j6 N0 P/ k
ary = new int[]{1,2,3}; 直接给出元素的初始化9 u2 b, {4 r$ r4 h
3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化8 a. {% w( m; I- @; ^+ u' a
* 不能用于赋值语句2 F6 D6 P& R1 N2 s1 J' R3 H+ W( \
int[] ary = {1,2,3};
$ |( m8 ^3 Z e& _1 e9 H& M8 o ary = {3,4,5,6};//编译错误
2 _( L4 ?! x0 z1 v4 _3 P( W; c1 n4 k
Java关键字: if, public, class, else, while
9 i s6 L7 y4 p5 R+ S 特殊关键字: goto, const S V% I- C! U5 o8 r. D' X/ E1 [
java中 true, false, null 不是关键字, 是字面量!
- F! b9 b$ V) l& `9 g% N5 Q: M6 }* u* C9 f0 d5 i, a9 Q5 Y, z" e, y! P
4) 数组变量, 数组对象, 数组元素
, _4 w( I' v% C! S/ ]0 W 如: int[] ary = {1,2,3};7 Y6 n8 v B$ x, j/ H( M4 e
ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组
9 H% E* J% L; C0 h& \7 G: r {1,2,3} 数组对象
7 W7 p/ L& j1 [0 ?) U2 V 1,2,3 是数组元素5 z- y' Z: X* A9 U. c1 K
( g( x- n# [* \% |) k% c5 s7 k
5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1
1 g0 ?8 {8 \6 t7 Z. @ A 使用[下标] 访问数组元素
3 }+ q. ]5 Z2 z B 越界访问(小于0/大于等于n), 都会发生运行异常2 f, k7 M+ ^' e! [9 x7 r
C 使用.length 属性可以获取数组对象长度
& L0 O) {3 @3 n/ y# C9 ]' K Y2 A, v; v! U8 B
5 数组的复制与动态扩展算法+ ^! h" j9 Y* I5 w. W0 T( F
1) 数组对象的复制
* j7 d5 g5 L! A3 ~6 h o$ @, _+ q2 s5 ^. \
2) 数组的扩展问题. }4 c1 ]1 p4 h' Y3 P
1 Java数组对象的大小是固定的, 数组对象是不能扩展的* p4 \3 H% D$ b
2 利用数组复制到方法可以变通的实现数组扩展
3 R3 }' U, @* x5 e 3 System.arraycopy() 可以复制数组8 a" T0 m' ]- ?* z$ d
4 Arrays.copyOf() 可以简便的创建数组副本5 h" j2 H. ?7 y0 r* R4 _ A
5 创建数组副本的同时将数组长度增加就变通的实现了6 h' S3 \8 w% X) C$ O) a$ a5 W
数组的扩展; x" a% u, R6 L* V( W. g
0 W5 U! G$ H2 w, i
案例1 : 统计一个字符在字符串中的所有位置., K- o$ s9 U+ h: j- M0 w$ ~' F: }+ q
字符串: 统计一个字符在字符串中的所有位置
0 M/ S# z: }% V* L7 Y/ Z5 Z4 n 字符: '字', i9 }$ S1 i( A* s( Q @
返回: {4,7}
! r% G. w( R2 H* V- { V$ C
e* k* D: U; Z; c6) 数组的迭代: 将每个数组元素重复的处理一遍.4 }: \' y5 B6 V# G
for(int i=0; i<ary1.length; i++){
_1 G6 B, S) X) ?. O; }$ q System.out.print(ary1[i] + " ");
: R* R p! I0 U+ n7 T }; I0 u1 d: {' L! x8 J
' L2 I2 P& ?+ M/ f
作业:
+ s$ V' ]) m+ u2 J! B6 A! o 1 复习并且完成 全部 课堂演示代码, 添加适当的
2 e) S% `5 v7 w3 J& w' D 输出语句, 研究输出结果, 添加适当的注释., l& m1 j6 L; T* e0 U
2 实现案例:
4 M3 z' U/ v1 l/ n+ R9 m 案例1 : 统计一个字符在字符串中的所有位置.
. X; l1 N. P: d1 b 字符串: 统计一个字符在字符串中的所有位置& |) O4 |: C! M1 E3 F
字符: '字'
9 J5 S; C j" j1 s. d }/ r& e) f 返回: {4,7}
' \; f9 q+ d2 u1 h+ Q- E public static int[] count(String str, char key){}
$ r8 c, u! E% i' N- H0 s
/ j& Q0 n+ T* F) [0 d6 Q% T char key = '字';6 {; E5 G% X: p, m: K/ c! {' i
String str = "统计一个字符在字符串中的所有位置";
: D- a9 X& L) L: Q int[] count = {}; " y' W! ?$ H. i- }* q
for(int i=0; i<str.length();i++){/ q4 ` j4 _& S6 ~# S0 D1 A
char c = str.chatAt(i);2 J, c4 w% R8 s% @" h
if(c==key){$ ^4 d& y" P* P, ?2 {6 K
//扩展数组,
* G3 L& y5 W" V6 _8 L count = Arrays.copyOf(count, count.length+1);
# R6 K; |& n K. F //添加序号 i' M Q, Z/ @9 T' v/ C
count[count.length-1]=i;# v, B& r& x: w, D. J8 f
}
) _/ n0 n4 I0 H }
* L% o+ v2 r7 ?* b. c: n
) I2 |0 ]1 ?1 G" V, x9 w8 i
: w. @- j! n( X" h1 m) W 案例2 : 统计一个字符在字符数组中的所有位置.
3 u8 @0 v7 H& |: C 字符数组: 统计一个字符在字符串中的所有位置
# ^: e) i7 L; T% H 字符: '字'' n- w& H& M: A8 I% {* ?
返回: {4,7}
$ Y: A$ d: ?+ h& M# N4 L
2 l- Z1 A2 l" c3 s3 u7 A: Q, b& f6 f 案例3: 字符串统计案例:2 N+ V* a2 n9 I/ B5 [
字符串: "123456789012"0 f) C( \$ h% X: [( m; C
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1- ~$ o' B& u& ^2 s6 F8 _9 q3 c5 c
将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 21 a, m- y% H; X4 u5 z
: `1 C# @2 b4 F( {, O4 W
案例4: (选做) 将一个整数数位翻转" {+ K* `5 _# S7 a+ Z$ o
如: 整数 56123 int i =56123%10=3
2 w: f! n: k4 L: f" s* c0 T int s=56123/10=5612
5 {* t+ G8 E2 E7 j8 t! F) A4 z0 u ; p% a. T+ A( s9 ^: ?6 `0 U0 Z
! C- _! h6 G) F$ T7 D
返回结果为整数: 32165( b3 y4 ^) _6 R
提示: 使用 %10 获取最后一位- \ d8 v, p5 `9 _
使用 /10 去除处理完的最后一位2 S' X2 Q1 E. |7 B4 `1 c
: Q- K1 l. H+ \' N |
|