|
该用户从未签到
|
1. while$ Q# B5 b7 S' f# W: Q) T
While 循环控制0 H% c/ }, o3 V! [5 h
6 n9 `; r1 C8 h5 [) `4 S Scanner console = new Scanner(System.in);
# }8 n% Q* z! t& B, O while(布尔表达式){6 q' G2 [( T- g# ?( U$ `
qty = console.nextInt();% Y; ~3 X* L9 X% Q4 \/ R- m* t4 J( x/ q% V
if(qty>0 && qty<=5){ //五个以内
$ H B+ k. }5 |; x break; //打断, 打断当前循环
0 ], ?0 E* G0 w' y* y }+ B( e' `$ z: r$ ?2 ~5 ^; c3 {( c& O5 x
}$ j' O6 y5 g+ d! f4 U7 Y8 s) J/ O
9 k% q& @9 C7 }2. for 循环(主要用于几次的循环)
$ C6 y0 F& k, {$ z6 G3 u 循环控制
& z- k5 c& R; t0 I& O6 H: ^, ] for(初始化表达式;布尔表达式; 递增表达式){
6 z' T% n2 D5 m //循环体
0 _* P( ]3 P+ [# h: p }
7 y6 b% v9 w0 I. ~ p% X. m for(;;){
5 d. C0 D% k& ~9 N( o3 W# _' ^. t }9 }- m6 j2 r0 Z
for(int a=1, b=3;;){/ M' K: J% |0 H; s* @) E: N
}
! L8 h4 s5 g1 e9 r% a$ {' ^0 ~, K W1 d, |
6 @- \7 G5 ?% D Example:
( n }$ T8 B, y7 S4 u+ X for (int i = 0; i < array.length; i++){
! W- N% b- T% @$ J" M" c System.out.println(i);
& }2 s1 k% ~4 T* d _3 G3 R }
. y8 @$ j3 {# ~6 Q2 N! q9 S6 i- j
# z5 _" O: k, q# ?: l3. do ... while% t" Y4 t- }8 z W( D2 @- V
do ... while() 循环控制9 ?7 z1 _0 [( }5 s2 D5 {
do{
% ~& T: Q* ?% _( ^ //循环体5 }3 x- l6 N1 b+ r6 K n
}while(布尔表达式);1 \" U6 N* ^2 R
Example:
) p% ?4 |, M" X) o& @" s do{
$ J6 |2 m9 d! c$ ?+ Z/ h* S System.out.print("输入押注数量:");; [7 b' U ^$ r1 K* H* h4 R
bet = console.nextInt();$ m5 v* o3 z n* }3 c
}while(bet <= 0 || bet > balance); //否定条件
7 `# [: N( f, F3 \, X( a. ]7 B* _( H* k
4. java Array0 s; X7 y/ m+ K* B1 z4 b
1) 数组变量的声明
8 a& r9 ^9 I# x- V1 i int[] ary; 声明了数组变量 ary, 数组变量是代词,0 u( P5 r: a, K" |5 u- r& K
int ary[]; 为了与C语法兼容的写法, 不建议写法,1 M) [4 G' w% b7 q0 p
+ i4 q; T% f6 u 2) 数组对象动态初始化4 W2 E* g. O5 o4 ~: X& v2 z
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词
( B% V6 n' d2 ^- u7 {. \ 指代了具体事务.
& J' T# {& c' N) g- A$ [+ ^ 数组元素是自动初始化的, 自动初始化为"零"值.
! }) I6 v0 W- m. V/ Q "零"值: 0, 0.0, \u0000, false, null
& S" ?. Q; t X9 Q' M6 d$ P& ` ary = new int[]{1,2,3}; 直接给出元素的初始化
+ P" J) F, M4 f# c! ] 3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化1 e3 \' ]6 l: q8 W) N( }$ f) F
* 不能用于赋值语句% @7 {- M* S7 B6 N# w
int[] ary = {1,2,3};
3 x7 }; `; j _4 _7 j5 T3 W ary = {3,4,5,6};//编译错误: r- t# `! W; @% k6 ?# a
* B( S: S# }8 C5 x Java关键字: if, public, class, else, while
0 d) U0 z4 P; a' } 特殊关键字: goto, const' q4 j5 B2 b5 P6 }4 {
java中 true, false, null 不是关键字, 是字面量!' Y% D: N; h$ m( t* ^
2 w; ~* ^9 D) y8 G; T. k. U 4) 数组变量, 数组对象, 数组元素 # d1 r9 \7 A6 k3 w- l$ l) ~
如: int[] ary = {1,2,3};. y- w4 I9 H2 I$ j* P. U0 t
ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组
) G. q) \5 u) m' U0 q, c) W2 f {1,2,3} 数组对象
1 ^# L' z# b b7 Z2 T 1,2,3 是数组元素! N* o* M& X b0 u
* ^& F1 j, ` p 5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1
7 j- m: G- ]. W; T/ K( L A 使用[下标] 访问数组元素
0 |8 N5 x# j$ a. z B 越界访问(小于0/大于等于n), 都会发生运行异常# O6 [8 s4 c0 [7 ? g
C 使用.length 属性可以获取数组对象长度/ `5 k- }2 q9 C; x9 D* i/ p
. S5 f# B# B7 Q& h5 数组的复制与动态扩展算法
! n' ^8 m+ n) T5 @$ e 1) 数组对象的复制
8 `0 z f- k+ ? N6 g' D/ _+ F3 l7 q6 r
2) 数组的扩展问题. |. [+ M7 L# t/ Q: p4 v
1 Java数组对象的大小是固定的, 数组对象是不能扩展的
: X& P% l- B- ^6 y% z" U, ], h 2 利用数组复制到方法可以变通的实现数组扩展
0 m% f7 `. b3 ]+ E, \; @7 C 3 System.arraycopy() 可以复制数组) Z$ [' }% u. [% z; i
4 Arrays.copyOf() 可以简便的创建数组副本# k: _& j4 q1 W2 O* b* [" G
5 创建数组副本的同时将数组长度增加就变通的实现了* v; w$ Q5 G3 |8 ?9 A4 f% t
数组的扩展
9 q# v7 T; G: j+ K" E/ F+ D! d% p, s0 Z6 F
案例1 : 统计一个字符在字符串中的所有位置.' m- R, o. T; m' t
字符串: 统计一个字符在字符串中的所有位置- T7 a8 R# `- r( k
字符: '字'( S5 k* u/ |* D3 ~& J. }# u
返回: {4,7}" e. D7 L) Y* v, `& h
/ a) ~& H: P% t; A1 k3 S6) 数组的迭代: 将每个数组元素重复的处理一遍.1 U5 d( @! I' b6 k
for(int i=0; i<ary1.length; i++){& [: G% k+ r2 C2 E- ^
System.out.print(ary1[i] + " ");
0 W3 R7 X4 K* F; U8 K }
' t* L# b3 J( E f' n7 j9 N; Z- ~: ^$ L& |9 I/ H) g; U" I
作业:
) V) _* k# O/ ~7 [. h+ n+ l. q 1 复习并且完成 全部 课堂演示代码, 添加适当的1 L" p6 E* b7 _& E
输出语句, 研究输出结果, 添加适当的注释.' S6 p `% Q; u' @. F$ i# v* X8 _
2 实现案例:
5 N* ?: m$ u1 Y% X( E0 s" [+ Y 案例1 : 统计一个字符在字符串中的所有位置.8 s& d+ @9 |" e" x. `
字符串: 统计一个字符在字符串中的所有位置, u s/ O; Z# {$ ^, J/ U
字符: '字'
' t! v1 r) Q2 s3 r5 V0 z5 d/ k 返回: {4,7}
- t4 h; w, P) T a6 H* E public static int[] count(String str, char key){}5 V, C/ q% X4 ]0 C) a& l
2 K3 u2 U! D! G7 F4 J6 e u& S. f' d* F3 N
char key = '字';
& ]" }! O6 I0 h+ i+ _ String str = "统计一个字符在字符串中的所有位置";0 I' _9 e# i; J7 H
int[] count = {}; 7 V" e' s; @/ h) z/ ]
for(int i=0; i<str.length();i++){
' D0 `! j9 h% U( G/ e7 V+ a; ]9 U char c = str.chatAt(i);
7 U/ j& C1 d: z if(c==key){
7 A( [# _% @' n6 B9 @ //扩展数组,
2 @( D" c! r7 g$ W2 s+ \; R count = Arrays.copyOf(count, count.length+1);' Y8 t3 ~4 P3 r# B
//添加序号 i, l* r" Z# b6 ^9 S3 y& y. R
count[count.length-1]=i;' J; ?2 h' O0 m
}
# b0 O- }: g! V5 m6 | }
2 i, X7 Q( q* w$ T! C; ~9 ^1 Z! G- y
" d' I( H5 w" g; T5 Z6 O) m' K0 E2 E) I) |
案例2 : 统计一个字符在字符数组中的所有位置.
0 W& _/ F* n! m 字符数组: 统计一个字符在字符串中的所有位置 H3 u+ z, i% H; y' B! `8 q+ F
字符: '字'% J" a# q# f4 Q3 b6 x
返回: {4,7}
( z( {$ F6 y4 g D4 U9 Q, r2 D, Y) A% G# `1 F; N+ R, _
案例3: 字符串统计案例:4 c7 P, n* H( Q
字符串: "123456789012"0 E6 { F/ N* n/ c4 I# [
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1) [2 _5 n8 w2 t
将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2
+ G( [* L% l) I! r; {# j8 u' d8 C/ l% m# W( O x
案例4: (选做) 将一个整数数位翻转
: T, V% a6 c% w+ d 如: 整数 56123 int i =56123%10=3
7 Z8 D8 M4 V4 Q: W int s=56123/10=5612
% G+ \& a R' S6 Q% V- ^ & M$ t! F( t- ]& Z2 |4 q B! P5 k
/ N5 }# F. s+ f' g# y2 j, ?
返回结果为整数: 32165
( M/ o$ m, } V5 n# r 提示: 使用 %10 获取最后一位
7 `' b" p4 J% k t2 u! I& V 使用 /10 去除处理完的最后一位4 m2 z# n9 C3 O' `$ w
8 B- T# {( ]3 e3 P
|
|