|
该用户从未签到
|
1. while" n- q! B- @+ B4 ?7 j. F9 X7 A
While 循环控制( g; y" ?! N) C# M+ N! E0 d1 @
0 g4 p! T$ { w; `4 W
Scanner console = new Scanner(System.in);* s# t! z5 i" E6 }; D0 z) z3 y
while(布尔表达式){" _- D7 Y0 n+ ?5 Y
qty = console.nextInt();
' V( D# M( ^; Y# V- K3 e) N: o if(qty>0 && qty<=5){ //五个以内
' L- N+ e# \4 ~1 y break; //打断, 打断当前循环* ^1 ?2 }4 H O, J7 @" s
}2 M8 y% |. w8 ~1 p: \ l
}
# Q7 l; p* }3 Q& k" F. [: o! N _: `/ y0 K, M3 ^2 ?' @
2. for 循环(主要用于几次的循环)1 R8 B. s8 X# ~& d+ N
循环控制
- Q, Q. T2 e1 f1 H for(初始化表达式;布尔表达式; 递增表达式){2 ?+ `6 e A! ?( r# Q/ T# C
//循环体% d: k" V8 {- ^4 g' J6 |
}
+ F. j$ N; B9 J: B for(;;){
; O4 D( _; q5 ` }. k$ U7 e4 N0 `& W' V
for(int a=1, b=3;;){
$ r( g+ _) k2 z5 G1 r, K: J8 q$ J4 J }6 A; V3 a2 R1 S
: S w# u- `" d: J, _, }6 e
6 O6 a1 \; ^$ ?8 E
Example:( d+ F4 G8 K5 a6 K
for (int i = 0; i < array.length; i++){
. V! r7 s% l* O- @9 f- ^ System.out.println(i);
% n0 V3 M) _" D \$ z0 r. W, L }
' L% ^, L. Y; b, L: F: I9 ]
w3 H1 h! f4 ~: [& N% w. M3 r3. do ... while
8 x6 E' F0 K( \ do ... while() 循环控制8 i5 i# E& S" Z$ r5 s9 _* C# h
do{/ Z# K8 v: n, Q4 W( o! D; l
//循环体
" ^: a6 k& A, X5 ]6 @ }while(布尔表达式);
. u% d5 I2 [) _/ d8 D, w Example:" H* b6 M0 R( v8 H" j/ j& t: ^9 d
do{4 |- `( E+ Y: u
System.out.print("输入押注数量:");
6 L3 z* ^5 k& l; H& I" E bet = console.nextInt();& U2 S2 g7 H5 `+ T$ m0 f/ y
}while(bet <= 0 || bet > balance); //否定条件
) t( W& n- K$ y3 ~, \' D$ @
u9 N3 `) G4 ]; d4. java Array
# b6 g4 H6 D, e* p! P' _+ E& p 1) 数组变量的声明9 ~) s7 @7 {2 J- ?+ g# C. u/ d) P
int[] ary; 声明了数组变量 ary, 数组变量是代词,1 j- Z: c* \$ D' I6 @4 d, d
int ary[]; 为了与C语法兼容的写法, 不建议写法,- t0 v7 y% r. t+ A
# u8 o9 W' ?& {6 ?7 f$ G. Q 2) 数组对象动态初始化6 u3 ~) |! o* q% h- |, J
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词
+ a: n2 x1 D# Q( G" K) a 指代了具体事务.1 k v* m7 P, ?# \+ [& y5 P
数组元素是自动初始化的, 自动初始化为"零"值.
* \+ w8 n! y& c3 H M8 \: ?# a "零"值: 0, 0.0, \u0000, false, null4 U7 O5 J7 K) W( f" m
ary = new int[]{1,2,3}; 直接给出元素的初始化
" [4 ] }( d ?" | z 3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化! B+ w0 U* u9 N( N4 L
* 不能用于赋值语句
+ I1 {) }( E9 A( C; W1 W% ~ int[] ary = {1,2,3};
; ~# m# C3 x# R8 ? e* y( o+ y ary = {3,4,5,6};//编译错误
2 [+ E) q+ a6 T# B+ o8 |' d" C% c3 s+ f! P1 M/ g
Java关键字: if, public, class, else, while6 ]8 R1 y- |4 ^: d/ r9 v
特殊关键字: goto, const
1 K! x: J/ @5 ~- I) U5 k java中 true, false, null 不是关键字, 是字面量!+ A! b' Y3 w) F7 ?/ D$ M! P' W
5 W- a, _4 k" h( T3 [ 4) 数组变量, 数组对象, 数组元素 - O( T# v2 I: M6 z; R$ R
如: int[] ary = {1,2,3};0 U- a/ o$ [$ B
ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组0 Z: d" @1 l: W8 k( q
{1,2,3} 数组对象
, v3 H! ~7 ?0 g, I$ d) s 1,2,3 是数组元素 j0 u7 h4 v/ g. W' S0 N
v- ~- x" W) n6 ]+ ]( `* Q 5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1
% }$ x* R, X1 k$ E! t( S A 使用[下标] 访问数组元素
( L! N$ B" `. d B 越界访问(小于0/大于等于n), 都会发生运行异常0 w x7 H+ n! L- s c$ v2 P
C 使用.length 属性可以获取数组对象长度
0 B6 S7 M& C9 b& }6 `1 d3 I' c) Y, C3 b! J z0 E& s2 P
5 数组的复制与动态扩展算法. l* B A: u/ p- j% m# E/ K
1) 数组对象的复制4 ~& Y- s# w5 k1 b5 C& P3 d
- }) }# ^3 A. b' C( `0 m 2) 数组的扩展问题
% C# v7 l! {( B: l: q/ n 1 Java数组对象的大小是固定的, 数组对象是不能扩展的0 r, ?$ G1 W, f8 E) s! Y
2 利用数组复制到方法可以变通的实现数组扩展) [' z8 J. T W, z5 r v
3 System.arraycopy() 可以复制数组7 B; h* d* ?- \+ }, X
4 Arrays.copyOf() 可以简便的创建数组副本0 Y3 q& r" e. m' D* }; D
5 创建数组副本的同时将数组长度增加就变通的实现了
9 U7 ~! _( a; V: D6 ?8 J 数组的扩展
7 P$ n8 }! v0 H0 f. e: `" T/ ]2 l3 b
. @! L& ~2 n X, o2 T6 k/ h 案例1 : 统计一个字符在字符串中的所有位置.
R/ f% {2 N# p" q 字符串: 统计一个字符在字符串中的所有位置5 y) z3 i8 h( t% ^$ j
字符: '字'
( ~& `5 p4 s% q' R: Y 返回: {4,7}+ m8 ` S/ X) W9 D4 p3 q( v
/ A8 E7 B; F% a* H6) 数组的迭代: 将每个数组元素重复的处理一遍.
1 l& ~# y* W* X# k" W4 e* t for(int i=0; i<ary1.length; i++){
: ?4 w1 ]8 J; t2 K$ ` System.out.print(ary1[i] + " ");8 \) y: k* }6 M2 t! B3 k6 p
}" ^0 ~; z& Z0 I2 @3 B( G" B6 j
. u/ f' w' P& s5 h/ o" U 作业: ( P1 ], O" j7 \, d8 L, n0 \& w
1 复习并且完成 全部 课堂演示代码, 添加适当的
0 m# u; |4 R7 B% |& N- `! z9 l 输出语句, 研究输出结果, 添加适当的注释.* X) _5 j1 O# j: \
2 实现案例: D8 \) b4 r3 e9 I. Y! I8 T
案例1 : 统计一个字符在字符串中的所有位置., b, j) ]& t1 t, E" P- f1 _) O$ b! g/ I
字符串: 统计一个字符在字符串中的所有位置
# X. [! Z0 s6 y* d- [ 字符: '字'& M3 S9 Z- w: e0 _; d8 k( D& s
返回: {4,7}+ e+ M; k3 p. c8 R& `1 k4 z
public static int[] count(String str, char key){}
' e9 U9 U7 y3 ]' j J8 n6 j
) r( r" D: R/ ?/ `, ^) P- f# F5 H char key = '字';7 }! z5 p$ Q F+ Y5 K, Z
String str = "统计一个字符在字符串中的所有位置";0 ]' l: E) z. b/ H/ @) Y
int[] count = {};
" B* w$ _5 J% Q; q7 | for(int i=0; i<str.length();i++){3 n0 }- W* t" E* t. g% q
char c = str.chatAt(i);
2 F, k, E5 @% E if(c==key){
" Q. p/ h4 Q$ @" X; M9 m% ^3 b //扩展数组,
6 r. C0 j6 T: _" z9 i) [ count = Arrays.copyOf(count, count.length+1);
8 T9 y- }4 i7 ]9 o //添加序号 i! u! p& H, G/ ]1 q' N! r) I- O
count[count.length-1]=i;
* M |6 E* w' V X6 s2 C9 N2 P }0 {) z8 Q# @; F5 r* q5 C1 a
}
/ e/ V" K' C9 |( D
9 [/ d$ N9 a! v. L$ q4 ?" Z6 d. [) |
0 V: d. M! p h. O1 C 案例2 : 统计一个字符在字符数组中的所有位置.
# m+ e3 m7 C- b9 d7 Y* b 字符数组: 统计一个字符在字符串中的所有位置0 ^8 U9 I+ r' j
字符: '字'( Q( `# K7 S& h
返回: {4,7}! F: K4 g9 Y: n* k+ T u% D
0 {2 P2 q& X9 |8 j$ h5 J: T/ {" v8 A
案例3: 字符串统计案例:
# C% U; o. _2 i0 u ? 字符串: "123456789012"
: T5 y7 \, x# a8 p 将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1- k2 Z4 C3 ~7 x6 u7 t
将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2
2 N; `; u0 J/ h# x& G
: C$ Z6 o- p8 M7 K7 Z 案例4: (选做) 将一个整数数位翻转
; P) \" |( x% ]* Y. V: }# @* c9 H 如: 整数 56123 int i =56123%10=3
+ G2 v F! K+ `! O: ^ int s=56123/10=5612
9 N$ A+ g# a6 e8 j9 t
: Y8 r6 I! @6 C9 q# m: f" A! ? n; d: K. V7 N2 r
返回结果为整数: 32165
! d% _1 K" P( V6 x' J. C+ X 提示: 使用 %10 获取最后一位
* `! T% T; ~+ w6 A 使用 /10 去除处理完的最后一位1 ^% L/ Y2 J! i! I1 ^
9 w; |" J7 v: |) {0 K
|
|