该用户从未签到
|
1. while
7 |$ p- k' t5 N8 O) o# ^ While 循环控制
, m3 E0 j _+ ?0 p% n- G' G. G# X! [6 P9 H4 X, w, f! t( a$ g
Scanner console = new Scanner(System.in);# K! S" i0 x7 E% m" {
while(布尔表达式){
) t$ u# B6 \- u0 [ qty = console.nextInt();4 s, `8 ?1 S: [# H+ d
if(qty>0 && qty<=5){ //五个以内; y: T" a# T% c( [3 d4 C: d4 ^
break; //打断, 打断当前循环9 }) u' ^, l7 i$ G, ]
}
. q8 ^8 S, s9 L& k0 `/ V; d9 Q, } }
, K9 o+ b+ v9 A' Y e8 P" G+ u: J2 g6 J+ R% N ]( i3 m
2. for 循环(主要用于几次的循环)
b0 [9 A1 ]7 g 循环控制
# g4 ?' g, ^) X A for(初始化表达式;布尔表达式; 递增表达式){' [4 b2 d/ M- d
//循环体& M+ I5 e+ h v i k
}! o& ~$ _8 s' n
for(;;){
3 p4 l5 K6 i! F; \ }7 n+ \% Y- p3 y
for(int a=1, b=3;;){% ~8 A& p$ m( X! d j
}
0 }4 ~9 n6 X S; F- {) y; O( s" K! S. I" D
; p4 G8 [$ V$ K- U
Example:/ q4 D( ^' E* S% V1 G. y4 ^- _
for (int i = 0; i < array.length; i++){% I N) |% x% L; O! b' N4 l
System.out.println(i);
# c8 G, Q) v# ]5 c7 A U }
) f- e5 b" M! ]+ r4 O; T, Q. D, y7 r8 ~4 |
3. do ... while
3 c0 S6 _4 H' R! r' q k& y do ... while() 循环控制
m% G: r$ _7 P R5 S do{
/ e. k! X6 A* ^ //循环体
/ U, A" s) h( W! n% c7 V3 Z1 S }while(布尔表达式);
a( H) S- ^* f, d; V2 p Example:
, x0 k- F( i" Y do{
. f3 @0 o; d+ B( d1 l H' T System.out.print("输入押注数量:");9 q2 e: s4 k: i; Q7 r& Z( l
bet = console.nextInt();
$ b5 J2 }& ~9 S% c1 Q6 y }while(bet <= 0 || bet > balance); //否定条件
: E5 ?) D7 \( T+ F( I
' K9 b1 T( J8 M) S: f2 V4 B4. java Array
6 W c4 B+ ~3 N6 P* } 1) 数组变量的声明
2 }; ]/ W f' R- m int[] ary; 声明了数组变量 ary, 数组变量是代词,
X7 S, b6 P' I$ L8 D int ary[]; 为了与C语法兼容的写法, 不建议写法,$ f0 U1 r* M( w
: }3 S# y; o6 y7 ~/ R1 A+ [
2) 数组对象动态初始化
8 `: {' p0 B' h* x ]1 s1 ^ ary = new int[4]; //数组变量引用了具体数组对象, 就是代词
- D/ B3 O( Y1 y. p 指代了具体事务.
/ a8 g: F0 i4 H& N 数组元素是自动初始化的, 自动初始化为"零"值.* |- ^9 E3 }7 W- v: r
"零"值: 0, 0.0, \u0000, false, null
8 a- R3 z2 r4 Z/ @4 J3 C, _# l ary = new int[]{1,2,3}; 直接给出元素的初始化( t+ r4 R1 h5 r+ T9 b0 T
3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化
2 g. w# N, M6 T L& y4 T * 不能用于赋值语句( B) q5 s6 o5 V) n( ^. R% C: n
int[] ary = {1,2,3};* p/ C$ Y0 W+ p( \5 g
ary = {3,4,5,6};//编译错误3 X) l' B' D8 S. Z
: V( l; b' d; U4 n; V
Java关键字: if, public, class, else, while$ i9 x: s6 b5 n: i
特殊关键字: goto, const5 F% A$ W7 c2 I, M, Q
java中 true, false, null 不是关键字, 是字面量!4 w# X( ]0 L* M0 y2 r$ i
% V# J# f2 E! T2 n
4) 数组变量, 数组对象, 数组元素
0 N! f7 Y; ~1 N+ z- j' B! N 如: int[] ary = {1,2,3};
) C& N; K# }( G* t+ p! H5 [ ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组
, y9 m) t8 E5 a* B% c/ P' Y. [ {1,2,3} 数组对象7 T% g- k" b* S2 e- Z3 W
1,2,3 是数组元素
+ b4 _' }$ x( w$ O( h" Z) ]3 d4 X. ~% A5 Q8 ?, m1 v2 Q; Z9 @% o# ]9 Y
5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1
( S9 I4 x8 N1 ^/ x/ g9 q" j A 使用[下标] 访问数组元素
) p$ E- \2 k5 J* K% t* b B 越界访问(小于0/大于等于n), 都会发生运行异常$ |# S9 L8 P& W- H
C 使用.length 属性可以获取数组对象长度# { ]( r7 I7 Y; c! f( Q# W
0 f- E0 ^7 V0 j6 i! j: d5 数组的复制与动态扩展算法
$ L, y/ F$ l8 f6 ?+ G5 [9 B2 J' t5 } 1) 数组对象的复制1 n2 x+ Z9 S- [- E* x4 \
% |% n/ j; I E5 }2 n4 U 2) 数组的扩展问题' e) H+ R1 q1 F5 \% Z/ C
1 Java数组对象的大小是固定的, 数组对象是不能扩展的
, \- y: V- s; R5 s1 f 2 利用数组复制到方法可以变通的实现数组扩展+ b; Y3 u; i( ]3 d
3 System.arraycopy() 可以复制数组; m8 ?$ S1 D0 i) ^
4 Arrays.copyOf() 可以简便的创建数组副本
, p; J- ?; t R2 \, Y* C; p+ E 5 创建数组副本的同时将数组长度增加就变通的实现了/ }2 w- Z' R' S
数组的扩展
# A5 G# _0 I3 g8 x% W
- s: v4 @6 {# ~7 s* G 案例1 : 统计一个字符在字符串中的所有位置.. x+ S# Q$ D5 n: O- p5 M
字符串: 统计一个字符在字符串中的所有位置3 X% u$ R# w2 ?8 c. U
字符: '字'
9 `; U" F* E6 q0 x7 _& H 返回: {4,7}
! P' {. X' X4 G1 J1 A, A6 i) k2 Y( t/ ~( G2 [1 r
6) 数组的迭代: 将每个数组元素重复的处理一遍. t1 j3 O% m" s) `: m5 q
for(int i=0; i<ary1.length; i++){
6 f+ R& S$ B- C7 c" _4 J k7 w System.out.print(ary1[i] + " ");
; C1 A9 \' ?) q# e! F3 o6 { }
. {5 w9 D( n$ e. y3 {% p7 I: @" G+ f
作业: # d9 k& b( p) t; h% t5 N3 J
1 复习并且完成 全部 课堂演示代码, 添加适当的
. `) q( \8 c1 H* q* h9 H N 输出语句, 研究输出结果, 添加适当的注释.
; f k- k: I5 Q& y( x 2 实现案例:
9 O; l5 \! O h: c' L9 e0 _ 案例1 : 统计一个字符在字符串中的所有位置.
$ p- ?" `2 Y4 O; X' H 字符串: 统计一个字符在字符串中的所有位置- ?" x+ e( z- R( }
字符: '字'$ n$ i7 B' |4 [2 Z" v' d$ _1 z
返回: {4,7}
( t+ h' C- |0 X1 N5 }/ R6 y @ public static int[] count(String str, char key){}
" b3 o9 J6 y: f B7 A2 F - a; h& V9 F* P- r, R
char key = '字';
. m% @8 P# c5 W& c2 A' v+ Q String str = "统计一个字符在字符串中的所有位置";( _& O4 G" V6 G- S7 n
int[] count = {};
/ X' {0 }/ E- t* F# O, u d2 X9 K f for(int i=0; i<str.length();i++){
d0 `8 v, E2 H. |$ e char c = str.chatAt(i);
, y! F; }4 n# }/ v% F" d if(c==key){) d; d7 h L% K: ^- z
//扩展数组,
* d/ i/ O6 C0 J9 c+ Q' K h count = Arrays.copyOf(count, count.length+1);5 ^* s$ P1 q9 t% g1 s$ I: y6 P
//添加序号 i
7 z/ x0 W" y0 \% j count[count.length-1]=i;/ b0 }5 f8 F# l0 o+ U$ M, V
}
4 J' `7 E4 u* x$ c$ ` }" ] n! c' _6 Z3 C. G
/ i% A! w& ?' _
, o4 S/ w* E1 r) s5 y) k 案例2 : 统计一个字符在字符数组中的所有位置.; W( D. a2 T" Y* y: L% a
字符数组: 统计一个字符在字符串中的所有位置/ N5 @2 V2 ~: w1 z2 t: c! \/ w
字符: '字'
7 v/ W% {5 ~" [8 R- G6 ~ 返回: {4,7}
! [$ w* |7 _/ d- ~
+ Z4 g( a! j8 L. |3 ?2 l- W 案例3: 字符串统计案例:+ s: ]& [0 Q$ Y# {: S! N
字符串: "123456789012"6 h) n9 r' q2 q7 R |! w; R; N
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1
7 ]! A( ~1 [1 p# l6 M 将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2: }7 x5 J' S- I, A6 j0 w
/ G; a% Z5 H6 j+ j n( X
案例4: (选做) 将一个整数数位翻转
3 P4 Z- e# d" l. Z 如: 整数 56123 int i =56123%10=3
2 F; j* q$ s$ h int s=56123/10=5612+ D1 E! U3 m: `$ O% i+ t
* w4 u6 t3 l8 @" i9 F
/ U; q% m# P" z! S& D- B
返回结果为整数: 32165
& A3 b$ b4 x: s S2 \# B0 _6 X 提示: 使用 %10 获取最后一位
7 T9 ?- {7 x8 Z! _- z4 Z 使用 /10 去除处理完的最后一位+ h9 n& J9 P8 B' p2 i* X
& A6 E% ]) Y6 G |
|