该用户从未签到
|
1. while4 q6 R" Z6 j* r
While 循环控制) w' Y" s# M% |: R% ^/ f, e
6 b/ \- l: @8 G+ ^( W$ T
Scanner console = new Scanner(System.in);5 p4 H8 @$ L' ?2 V$ N& C
while(布尔表达式){$ G' G' a5 D$ H3 G: m
qty = console.nextInt();
5 [' i/ c$ _) D7 C9 d if(qty>0 && qty<=5){ //五个以内8 Q8 w0 ]3 k' V+ ^4 F' b; q
break; //打断, 打断当前循环
& W+ l6 D6 c1 V' s9 ]& R }& K% ?8 _$ }- v
}' o3 k2 J% j6 m" g- Q3 X/ U% U( D# n- L5 e
7 Z* G# ~. |/ O: j6 j2. for 循环(主要用于几次的循环)
9 x3 o! |* w8 |( ~ l( H 循环控制
$ e6 M& C$ y d' ^ for(初始化表达式;布尔表达式; 递增表达式){
* U5 L6 D# m! S" I4 l' e; E. l; \ //循环体* o$ y3 R$ }+ [, q! R" S1 G& V( {2 P
}
4 Z, i: p$ C; g/ [+ t for(;;){
# R$ L; \ [9 d }
5 d& D& h( Q7 s! o& f' ^ for(int a=1, b=3;;){
4 i& u) D2 P9 T2 A+ s% h }
# R b& {: X' q0 f
4 S; J" y- f S3 [% _! I
1 Y) g& C W& y# O+ s7 S Example:
0 N8 d& c0 n& Y4 { for (int i = 0; i < array.length; i++){
8 D; E+ t% G: \& B* F5 M System.out.println(i);- ^; L: L5 ~0 N' x# }
}
$ k2 W U( o+ b- D d) j1 F3 W" V
9 i0 D/ P" R: `+ r3. do ... while
W w c5 O. V do ... while() 循环控制$ h& s" N& L: u& t: d* h
do{
; p6 d' L5 A' y. e //循环体
7 s! `! b8 ?8 }) q1 x. [* @) F4 @ }while(布尔表达式);
$ m$ T7 j# X2 V& v Example:
, i5 @- w% g6 r6 ~5 V6 Z: i do{9 i: n B3 c' q9 m2 y1 x7 e) V
System.out.print("输入押注数量:");
. S5 k* g0 I* N1 B6 l bet = console.nextInt();
4 s/ f: t$ n2 n }while(bet <= 0 || bet > balance); //否定条件
9 T9 O6 x1 X9 `( y {+ F# Z6 j- \$ G- Z- u/ ~
4. java Array
& p$ U, {# {) |; V* @7 W 1) 数组变量的声明
?( D8 V/ C; i. [% O int[] ary; 声明了数组变量 ary, 数组变量是代词,
7 s8 e3 Z! l8 W! Y- ] int ary[]; 为了与C语法兼容的写法, 不建议写法,, Z+ B0 ?, B6 h( M+ }
. v$ t6 ?2 w) V C5 P* y# @, A
2) 数组对象动态初始化
9 ^" Q2 a0 W& l7 v: l ary = new int[4]; //数组变量引用了具体数组对象, 就是代词8 k2 ~& }7 }1 @5 I. Q, b
指代了具体事务.0 l s. C8 o9 p- h! T) {
数组元素是自动初始化的, 自动初始化为"零"值.* C$ }2 a4 K+ E8 A
"零"值: 0, 0.0, \u0000, false, null
8 l$ ^" F6 l& ^ ary = new int[]{1,2,3}; 直接给出元素的初始化
% G' V# `* D9 A' C- z6 @ 3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化
: W3 a) l4 x6 ?4 o8 b * 不能用于赋值语句- K. n! N2 r5 I7 A
int[] ary = {1,2,3};
! R. q' s( G0 H ary = {3,4,5,6};//编译错误8 c( u% `2 S; c; l
7 O; _. K$ A3 @* f1 K Java关键字: if, public, class, else, while
* x7 J! G1 j% j; q$ x$ t2 ]+ w 特殊关键字: goto, const# E! k Q- Z4 y2 D& ^. j
java中 true, false, null 不是关键字, 是字面量!
- A) l# @9 u2 A- O& X0 t0 M, f( L
# b* L/ O4 p: h: f, L k 4) 数组变量, 数组对象, 数组元素
' S) [5 [0 t" c) T7 M 如: int[] ary = {1,2,3};. A' N1 v& e/ `) x9 |
ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组
, O4 w7 p; g8 h( `5 V) J& h {1,2,3} 数组对象6 r5 |. n% `0 j5 c$ V
1,2,3 是数组元素
0 v2 z+ C6 A. S6 B- i4 i0 E7 [7 N/ o J7 `$ b, v/ ~" M
5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1
5 V) [4 Z+ a8 s. A7 z A 使用[下标] 访问数组元素* s, S) y4 }; } E. I, l1 I
B 越界访问(小于0/大于等于n), 都会发生运行异常
* I8 ?# W {- |4 c6 D" {' p C 使用.length 属性可以获取数组对象长度0 p Q: A: h) U6 d' K
3 o( L8 l' M% _! e
5 数组的复制与动态扩展算法
4 s- }: ] w2 F; ]* W$ w 1) 数组对象的复制& [. U7 [8 c! r. ?4 R
0 o+ w8 R: ~* y. b4 v2 a8 N
2) 数组的扩展问题
8 A1 X4 P; t" }+ H h0 O" I6 H& ~5 n 1 Java数组对象的大小是固定的, 数组对象是不能扩展的
( }/ T) p2 F# V7 O" h# g+ z9 f u 2 利用数组复制到方法可以变通的实现数组扩展, N3 m/ H4 C% E& G3 H |( f+ |9 h
3 System.arraycopy() 可以复制数组. W, w6 N# B) U- m/ u
4 Arrays.copyOf() 可以简便的创建数组副本- H7 u4 C* ]( d- O/ @. Z$ i
5 创建数组副本的同时将数组长度增加就变通的实现了. G1 ?0 q `4 u6 ~. E ~
数组的扩展
. e2 P1 f" V- M J* C# Z2 Z0 m. f$ ?' X |% B: W( P' S* r G0 L
案例1 : 统计一个字符在字符串中的所有位置.
( _9 Z- n/ M) f8 q' ]8 v' [ 字符串: 统计一个字符在字符串中的所有位置
( M) S6 W2 |- o+ `( ^ 字符: '字'
3 Q5 H% \4 O7 D/ W2 l 返回: {4,7}3 D3 [/ [. J# s: C( ~' Q
9 U! M+ U: Y( }" a: R ^0 ?4 K6 n6) 数组的迭代: 将每个数组元素重复的处理一遍.
5 I& F! W. u+ @: i. N for(int i=0; i<ary1.length; i++){* ^. E' Z" b+ X7 m+ L$ e8 B
System.out.print(ary1[i] + " ");- v8 i) W9 N' D8 N* x" G" J
}
' A e3 {, T p0 }% [$ V2 Q/ i9 i. V# G1 G
作业: ' Z. ?' ~ s" a' v+ T2 D# Z: R+ y
1 复习并且完成 全部 课堂演示代码, 添加适当的
3 `; m0 d5 h3 l% X# B 输出语句, 研究输出结果, 添加适当的注释.% d# l/ a9 ^/ P) g+ ^8 Q! E
2 实现案例:
1 G5 D' n/ y. Z% l 案例1 : 统计一个字符在字符串中的所有位置.
" b7 s9 a3 r" m 字符串: 统计一个字符在字符串中的所有位置+ f' n- {# V) Z( F1 q
字符: '字'
" ]3 Y7 C" g. h0 k( m 返回: {4,7}& L- w4 B' D0 x+ u
public static int[] count(String str, char key){}
1 m) ?2 E/ e# g, w( u. m* S4 y6 O
( r' w/ Q0 U) |; y: r+ m/ I char key = '字';# t! }6 R$ |$ k$ v) R k
String str = "统计一个字符在字符串中的所有位置";; N' d, ~1 u+ k) L4 I5 R* g
int[] count = {};
2 f0 Q' ?$ ^* e/ y' J for(int i=0; i<str.length();i++){
+ g4 G+ u3 |9 `6 Q0 s char c = str.chatAt(i);
) f' |) n& M' B5 ]/ P3 N if(c==key){
K$ P, x: G1 E S/ h Q, I //扩展数组, ! A) Z1 Y9 S' U( z, q! h
count = Arrays.copyOf(count, count.length+1); E$ l1 O4 X1 P$ q
//添加序号 i+ w# s) m2 d- E
count[count.length-1]=i;; M; u3 w) Z: W# @
}
$ e6 }# R+ k" _3 E }
- ^7 T2 t) ]( i( q5 f
6 @- @, i4 t, _' e6 B: Y4 c9 J4 ^) `# T2 s* b0 ~9 o
案例2 : 统计一个字符在字符数组中的所有位置.
( P' R% m" N# @" d 字符数组: 统计一个字符在字符串中的所有位置: q/ J) D3 y! Z$ R
字符: '字'
+ N( Q4 P' @$ ?& m) ?! }3 S 返回: {4,7}
! q: Q% s; J6 l! `
Z! \" p. O/ y2 ` 案例3: 字符串统计案例:
: ^8 L9 u9 l, F# C 字符串: "123456789012"
2 E7 X% h. D) \+ H0 ^7 |$ [ 将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1
8 ]& A* k% U0 S$ _2 L 将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2
1 ]- m/ | h$ U6 X0 F6 `. {1 c4 [ }+ f. b7 }8 e, S
案例4: (选做) 将一个整数数位翻转
& |4 d; _2 F4 B) m4 r& ^. M 如: 整数 56123 int i =56123%10=3
% M( b6 _5 \: M, } int s=56123/10=5612' j/ B4 x6 D# P g
& b1 E& X! O- D$ y; e# Z' N: \. i- a3 H8 ^5 g
返回结果为整数: 32165
0 B. V+ @: `% q- Z0 A6 C! t 提示: 使用 %10 获取最后一位' m. \9 g8 a( p6 o. `( o( M
使用 /10 去除处理完的最后一位- M4 M8 e& U3 l F) b
6 Q7 ]$ l( c) @+ F3 T. v |
|