该用户从未签到
|
1. while
* J, r1 ~% l C# W1 t; R While 循环控制3 d. x3 v" p4 A! A: t, g3 U3 D, ~1 }
) J: Q7 k- @8 M1 M4 [9 A
Scanner console = new Scanner(System.in);& z3 K# M9 `$ F# g& v
while(布尔表达式){* O" k2 W9 M1 @) C, C
qty = console.nextInt();
) ~: t8 \7 k; @( S- ~# n! w if(qty>0 && qty<=5){ //五个以内
3 `% V3 Q* p2 g4 j2 o2 o break; //打断, 打断当前循环1 j. @9 G4 t& K7 K& L, j7 V. W& ^
}
) I* P) F& a* i: I' e }- S' r+ W' V3 h# Z- `
3 K8 c. o |4 d! S/ i& r! e) m
2. for 循环(主要用于几次的循环)) R; z9 G, e1 r( f# d; B S" M0 |
循环控制
) m8 R& A% t4 x, I2 I) y for(初始化表达式;布尔表达式; 递增表达式){
5 w; f# Z0 d! |9 d5 I# C //循环体
/ X2 p$ w$ s* ~3 Z }
! v2 w0 H, p. j$ L7 d! \) B8 h8 h+ } for(;;){0 d l) M1 w' U4 G* L2 N, K
}
0 y ~* J1 o% T for(int a=1, b=3;;){, R" f: u1 S4 [$ {2 a
}
' @3 _0 Q2 Q* V4 O4 N H4 D! k; V2 Z. h. ?
: }5 @# i% d! T& f
Example:7 m5 A! H/ [# h" H, I/ o
for (int i = 0; i < array.length; i++){9 |* V: o, x1 Y5 @8 U/ U4 `2 t
System.out.println(i);
4 ~0 ?# e3 G$ Q% a) a8 S }
1 q0 i6 [" O/ E, y& l/ g
# }. @* [ w% p4 n' I3. do ... while, m7 s- t8 S7 Y6 l+ J2 g- M
do ... while() 循环控制$ ]" C2 U `! I9 K2 Q
do{
; T3 R4 x; \% B' o' Q6 L& e //循环体1 \9 `" W6 A4 W/ G
}while(布尔表达式);) G; ^% `) d$ s5 W$ {4 n0 v
Example:
5 |( m0 J; i" x. G- l) m5 r do{
- y4 Z! ?" z6 r, n A System.out.print("输入押注数量:");% e# F- g$ R' D1 U
bet = console.nextInt();' P* T9 l7 J, D8 u0 F* f' }
}while(bet <= 0 || bet > balance); //否定条件" R, r3 u; W/ s ~
6 l9 e, }) P' U E
4. java Array
4 j/ a K7 Z! f. ?7 d 1) 数组变量的声明
: {. O2 V+ n; c+ o, S& ]3 ] int[] ary; 声明了数组变量 ary, 数组变量是代词,3 }( F8 k1 n" C0 m4 m
int ary[]; 为了与C语法兼容的写法, 不建议写法, x. n4 p9 m* a! S$ B
: R. m* |/ I! Z 2) 数组对象动态初始化# m# h; |# |. j" Q! _* Q
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词
5 \* }' a$ v" H H) v" J* H* i2 x2 r 指代了具体事务.- z1 Y: o z0 G$ b: l" }
数组元素是自动初始化的, 自动初始化为"零"值.
. V; g. d/ `) X- ~; Q "零"值: 0, 0.0, \u0000, false, null
3 Y7 t+ F3 w) u5 W ary = new int[]{1,2,3}; 直接给出元素的初始化4 y5 s. k* ~: o. v; E( @ r1 B9 N. d$ _
3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化+ ]- @+ i$ q4 Z1 m' j3 y
* 不能用于赋值语句# s6 H3 S" Z& `7 ?' N4 i3 e
int[] ary = {1,2,3};: i4 i6 @/ x. C3 b# B8 L- S% [
ary = {3,4,5,6};//编译错误
, O) ~* w/ w3 p' C( ^- l; `: w* T( c. z ^! g
Java关键字: if, public, class, else, while( b+ A4 E' t2 Q9 y6 N# d" u- }! o
特殊关键字: goto, const8 R8 o- w2 J9 z; D8 [1 {& F
java中 true, false, null 不是关键字, 是字面量!
' m2 u! Q/ G2 d6 F2 D% S: |2 ~9 H1 M* m
4) 数组变量, 数组对象, 数组元素
- Y+ [$ l& s; z$ I3 G 如: int[] ary = {1,2,3};
9 q" ]' T, D4 s& @ ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组5 k' ^: T" P+ h4 e' e+ A
{1,2,3} 数组对象
1 D8 D8 U7 W, d3 s0 Y+ U- H 1,2,3 是数组元素
! m& T7 H% d0 ]. W5 T$ A% G/ p$ u1 C
5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1 4 o2 d) ~7 K6 ]9 N, \
A 使用[下标] 访问数组元素
8 X9 S" C; \5 L4 X: H. Y: g2 P; N B 越界访问(小于0/大于等于n), 都会发生运行异常) p+ }( h# G' H+ {3 ~- y& \7 w0 c$ {
C 使用.length 属性可以获取数组对象长度, P' z9 y1 u; y
7 c1 B3 q4 V3 [5 数组的复制与动态扩展算法
" D/ z3 e$ A7 V I& p3 d 1) 数组对象的复制
2 i& F- J. p( S- j- p* i7 K7 \9 O9 T7 T3 z) O
2) 数组的扩展问题
' g. S0 _2 ^/ H7 Y/ M# M 1 Java数组对象的大小是固定的, 数组对象是不能扩展的7 @( c: v! X9 H7 X- S! l' j
2 利用数组复制到方法可以变通的实现数组扩展
# e# A2 Y" h$ m. j" f6 O0 g; X 3 System.arraycopy() 可以复制数组
& D+ l$ R5 z8 l1 F, f 4 Arrays.copyOf() 可以简便的创建数组副本
+ f. b8 v4 w! d* x. U1 G 5 创建数组副本的同时将数组长度增加就变通的实现了
$ ]& j5 y: Q7 X' l) n9 ~- Z" V 数组的扩展4 Z( y% v4 B ~ x% r% f4 d! [' g+ s
6 t- P, V' u9 y" q6 b5 u
案例1 : 统计一个字符在字符串中的所有位置.
; ^$ ^& r& G) ~. t 字符串: 统计一个字符在字符串中的所有位置' i% a% M$ u7 _8 _" M4 k: G
字符: '字'
; d; m" V; A, e G 返回: {4,7}
' I, Y- V; T/ v1 X+ }7 F' N1 [" a
, q$ x2 i+ Q% A" s/ i6) 数组的迭代: 将每个数组元素重复的处理一遍.
* U# Y% o3 {0 ]7 z5 q for(int i=0; i<ary1.length; i++){! ^, r0 [9 \$ x5 B
System.out.print(ary1[i] + " ");
& ~4 S- X! C3 h3 b- Z" F }. l& E$ N( ]3 j
8 K, u( B& _! m) t* {. U* @ 作业: 5 p/ S [ ~/ d0 G
1 复习并且完成 全部 课堂演示代码, 添加适当的
# y7 ?. Q2 h' e7 g8 n K$ A 输出语句, 研究输出结果, 添加适当的注释.! f e3 P [7 _, h4 _
2 实现案例:
' y1 e+ ]* ]7 n' L7 @ 案例1 : 统计一个字符在字符串中的所有位置.) \6 _% i5 v% g9 E/ y( ]
字符串: 统计一个字符在字符串中的所有位置! C# K' f- K6 C- {& t) ~3 K
字符: '字'
^( ~. A& ]4 A8 M" i2 l 返回: {4,7}
8 j# S( O* _ ^; @( N public static int[] count(String str, char key){}
- R) X6 ^8 s. P+ C
1 g7 w8 H: E! C char key = '字';: `1 g! U3 _! u9 T
String str = "统计一个字符在字符串中的所有位置";
. k3 A8 I. o1 l' j3 U, ` int[] count = {}; 5 j# X4 m5 I, o0 D. H/ b; d
for(int i=0; i<str.length();i++){
( j3 O3 c }! n4 o" t char c = str.chatAt(i);/ e( }3 |7 G7 N
if(c==key){
. s }, ~& y" c //扩展数组, . Z0 n2 R. j ~2 D% n* C. L+ j
count = Arrays.copyOf(count, count.length+1);! A; p- q8 S9 l7 Y, b: d
//添加序号 i
1 {5 U' O/ z" n9 r6 T count[count.length-1]=i;
/ H' y1 k% r3 u4 w+ q) Y }
4 y0 T, [; W* C; i9 Y/ {; g }
# j( q( g2 D: @/ I L+ @; C: ^ ' e# |. [9 f. Y* {9 h. H" [. O9 x
& f% s8 b" ^9 y& o8 t
案例2 : 统计一个字符在字符数组中的所有位置.
9 V) o) R3 K3 ^( x9 @- Z4 ~ 字符数组: 统计一个字符在字符串中的所有位置
, @% b V0 P9 n5 e 字符: '字') o& j6 F. p( m! Z! |( ~' |9 {
返回: {4,7}
, u8 R0 C2 E; B4 B: l2 e0 r2 }* B; {/ s$ h& T
案例3: 字符串统计案例:: L, @8 k) b; s4 T
字符串: "123456789012"4 w* T; |4 p7 M3 i- i
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1& b4 W/ l9 Q) p9 O
将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2
: m2 i& ?9 {- }7 R
( p0 G5 t9 N3 `/ v* F6 s+ z 案例4: (选做) 将一个整数数位翻转' ]& r- S* y7 E8 `0 b% {% B, M
如: 整数 56123 int i =56123%10=3
2 p. z3 w; Y6 e6 ^- r* f int s=56123/10=5612
! z8 T6 x/ j- B. q- s6 {
1 S: b) ~. t* g$ S
1 F' w+ K5 a/ C% } 返回结果为整数: 32165
& v$ a& z! {: i; p. _ 提示: 使用 %10 获取最后一位0 Y2 b3 H/ N5 r% x4 Q5 ~! D/ e
使用 /10 去除处理完的最后一位3 Z/ l. _: W+ o* `
1 G( K" m4 |- D- P) p8 f
|
|