该用户从未签到
|
1. while4 j P% D# ^; [/ l, P1 l; V% a
While 循环控制& ^# S! x$ M6 y4 g4 z
1 ?& \! @: y# a U# j! C6 x: k Scanner console = new Scanner(System.in);
' T2 m, [2 d* }; T4 X% i+ F9 i while(布尔表达式){
& Y+ K/ O$ ]6 K qty = console.nextInt();; j& E+ I8 d/ v0 G6 U# R
if(qty>0 && qty<=5){ //五个以内
5 p3 [8 f, S9 o+ m5 }9 G break; //打断, 打断当前循环
) Z) ~' I3 q$ G }! h. R: p' \5 o3 [
}+ o: g7 l- B6 M3 f& _8 J3 y Y
, ?$ p9 N4 P& t$ i) |# q1 t2. for 循环(主要用于几次的循环)5 ~) f& z7 [, B: B6 n: o
循环控制
# B5 k6 O+ k* D' v0 A9 B for(初始化表达式;布尔表达式; 递增表达式){: E4 j4 |! R# D( d5 Z4 i! ^! z% u J
//循环体
' F/ C3 H. \( Z0 @ }
7 T& o6 W6 ?8 x* e for(;;){$ y1 h* h+ I8 s# \* f+ Z5 m' _
}) M" o5 Y6 t# x0 n4 K. ?+ V
for(int a=1, b=3;;){/ E8 e& N0 \% q
}( r1 I9 r) V# l
* z7 t/ A4 V4 z* N- }, o. {
" |6 n6 y0 a+ y) `& [ Example:
: H7 S2 [1 u* T2 ] for (int i = 0; i < array.length; i++){
j# ]/ h, i! i0 o System.out.println(i);
) b% }( E- T4 `* z }2 j5 B6 w+ f8 ]6 \ s6 h
/ S( K. |7 @- G7 m+ |3. do ... while
3 o- C! H2 C. X& \ do ... while() 循环控制
& k1 o5 f& c W! d- j do{
* T& E2 {" O/ C' \ //循环体
8 n8 w1 F5 q+ G( v1 R& d }while(布尔表达式);
) ~ L4 q3 K6 C Example:
p8 R* e. N1 d8 I7 T5 @ do{- V" V8 y5 X* k6 r0 \" o
System.out.print("输入押注数量:");8 o6 l3 i, w/ U
bet = console.nextInt();
/ g- l" E; ?3 o6 \0 Q }while(bet <= 0 || bet > balance); //否定条件
6 n4 M$ n, g W+ L% c! h2 G# U; a
4. java Array
- e% i" [( l; G4 m! X* Y# r 1) 数组变量的声明
3 g% \' X9 K* ]8 s" D. f W$ n int[] ary; 声明了数组变量 ary, 数组变量是代词,
# d- n5 j8 q" z/ \ int ary[]; 为了与C语法兼容的写法, 不建议写法,
/ L8 n) k. z& p; m+ `$ C1 |
. w: i- B1 r. ~$ h8 o 2) 数组对象动态初始化
8 ~; G; u ^9 B! r ary = new int[4]; //数组变量引用了具体数组对象, 就是代词
+ v. m/ \$ D% r- j' f! ~# } 指代了具体事务.
N) \2 [' I1 A# t; X- P6 | 数组元素是自动初始化的, 自动初始化为"零"值.
5 B2 I& ]) S& f, E "零"值: 0, 0.0, \u0000, false, null
: ]) D1 q2 o( F, S. {# ?( k2 }+ D ary = new int[]{1,2,3}; 直接给出元素的初始化
4 r# `6 J$ c2 u( w' O 3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化
3 W9 O2 g# i5 `3 K * 不能用于赋值语句7 ]9 \9 t1 w0 H
int[] ary = {1,2,3};
% O! ^; r2 Q2 B9 z+ h2 T: o ary = {3,4,5,6};//编译错误: ]: M2 w, k; o$ R4 W/ u/ _" L
. H; Y. J* O4 }* ]
Java关键字: if, public, class, else, while5 Z+ m8 g) d9 K) c
特殊关键字: goto, const
" |: i; t/ Z( k7 n# I6 Q' U java中 true, false, null 不是关键字, 是字面量!
, I7 O2 I2 z2 G
* U9 w. [7 ]/ M. u 4) 数组变量, 数组对象, 数组元素 1 S9 a1 W9 y; k9 b& I& w
如: int[] ary = {1,2,3};
7 V0 M7 V. @1 o6 s6 ? ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组
: y' ?. S5 G* p0 u9 j0 k {1,2,3} 数组对象
/ g/ U6 h' r4 n/ a; M' Z 1,2,3 是数组元素% m8 k# B8 j0 b) X4 W
3 L5 Z+ l; k& i( y x
5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1 6 {; M) ?# @' [( Z1 m
A 使用[下标] 访问数组元素- m3 B9 F. O+ D3 b
B 越界访问(小于0/大于等于n), 都会发生运行异常# N" D) @$ f m) Z: v
C 使用.length 属性可以获取数组对象长度5 v! d R% j0 [5 |; n
; l" k* z% }3 c5 数组的复制与动态扩展算法: J+ H8 d/ t4 G' H6 Q
1) 数组对象的复制( }* |7 H' Y j
. G' _0 C g5 i$ m
2) 数组的扩展问题
' E" P1 K" M% w8 ` 1 Java数组对象的大小是固定的, 数组对象是不能扩展的4 x9 Y- B: ~+ K/ t. o, ]$ \1 c
2 利用数组复制到方法可以变通的实现数组扩展
: j' H0 h8 f! O: W% I# {8 b6 h 3 System.arraycopy() 可以复制数组! n9 z2 g, s- \0 J9 G
4 Arrays.copyOf() 可以简便的创建数组副本4 N' m ]' Q& K" C4 ?
5 创建数组副本的同时将数组长度增加就变通的实现了 }. `/ I N2 i2 {! o& E: V
数组的扩展
$ E+ A1 _8 I$ @7 ~! X6 o+ B
; ], ^/ `9 `+ V/ U3 X) S 案例1 : 统计一个字符在字符串中的所有位置.
2 T4 D0 o; C: o- }4 P+ z: K 字符串: 统计一个字符在字符串中的所有位置
1 U& s% _9 G+ F, h# y 字符: '字'
7 r9 j- e" H6 u9 @ 返回: {4,7}
8 Y `# D% C3 y, G3 t! H/ G
# V$ j* u3 l( I! T. T' c- |6) 数组的迭代: 将每个数组元素重复的处理一遍.$ Q5 b. @) M9 L! C" y; U8 o+ k
for(int i=0; i<ary1.length; i++){
2 L6 G1 `. m- J# u% J3 B6 f System.out.print(ary1[i] + " ");9 n, A4 o9 `9 s; u# Y
}
/ T0 a7 |# f3 {* p3 p1 u( I0 s" S* R5 f
作业:
& f( j8 k* Q4 d6 @/ v$ i 1 复习并且完成 全部 课堂演示代码, 添加适当的" f k9 I: o. h- W: p4 G
输出语句, 研究输出结果, 添加适当的注释.
( ~, E/ r% z% n0 C 2 实现案例:. B; N; t# D4 u0 a1 h; n1 H) F, X
案例1 : 统计一个字符在字符串中的所有位置.
. O2 q a9 U, b, E" q+ Z2 P/ |' f$ H 字符串: 统计一个字符在字符串中的所有位置 Z# W0 G& A0 ~- a' m7 @
字符: '字') F% q A3 g9 L
返回: {4,7}* ?) t1 U, r u) a
public static int[] count(String str, char key){} H4 J- F/ M+ t4 I/ b
; n' P0 q2 W8 G" P; m
char key = '字';6 s. b2 `6 p3 G2 b1 V' P/ e+ B2 d
String str = "统计一个字符在字符串中的所有位置";2 i1 p' o* L; A1 j- K& K H
int[] count = {};
! Q5 o1 b: U; s! u+ N) s for(int i=0; i<str.length();i++){
" O; ?9 h4 U0 l( I char c = str.chatAt(i);
( u8 b4 V& a" X0 H if(c==key){
3 p9 Z K% W* h4 N8 e //扩展数组,
: S0 h, f/ B7 z% P* f count = Arrays.copyOf(count, count.length+1);
5 f! K6 y \, w9 l& k1 f //添加序号 i
2 i( W4 n* c4 b/ h count[count.length-1]=i;
3 p$ b5 j H k$ H' f }
+ x0 W- r$ Z& J6 I N2 c! e" o( Z }
* x+ B+ K$ k& [4 ?0 }+ t4 j & H1 c: M6 z$ t' I+ V
2 t" J* ~" q, ~* W
案例2 : 统计一个字符在字符数组中的所有位置.
7 C/ ~- o5 B5 s1 N. K4 M/ S& y 字符数组: 统计一个字符在字符串中的所有位置) ~5 @/ e6 W( G7 W
字符: '字' S; T8 r( u. I1 h4 H+ g2 f
返回: {4,7}5 H2 k& B: X7 d
0 f+ |& n7 L% v9 p% C @5 Q( a/ X 案例3: 字符串统计案例:
# ?3 {& G. {' v9 [3 |8 o 字符串: "123456789012"" y5 ~, `+ J' s6 o( }- m0 b, O$ k
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1
) F' u3 a% V5 O 将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2
1 X6 h6 ]1 v, ~* I4 e( U6 ?+ X; E: [4 y. ?
案例4: (选做) 将一个整数数位翻转
/ u4 J) T& U: ?" F 如: 整数 56123 int i =56123%10=3
) j. @6 `3 O3 K1 ]: U' l+ T1 { int s=56123/10=5612" l$ q" _+ Z4 K
, U' B: Y0 ^ ~+ [- O$ t! v( a1 u4 m# J; [# t0 Q# q
返回结果为整数: 321652 z9 d! |% V, M/ m& I% I
提示: 使用 %10 获取最后一位2 @8 f$ U2 U1 y+ R+ f# i. R) t% _
使用 /10 去除处理完的最后一位
% C) ?2 c, h4 `- v8 Y( W) ~7 f: y3 V$ r
|
|