|
该用户从未签到
|
1. while
% d/ V; I. P0 A While 循环控制
" G- K& {! Z- ?- ~" E, H6 Y( x, ~. ?+ ]9 A7 r: C( ? w
Scanner console = new Scanner(System.in);& a. Z9 o9 s( W; z+ C9 f
while(布尔表达式){
8 f3 w; V1 {; h qty = console.nextInt();
8 }7 n' a! c: \% f' F if(qty>0 && qty<=5){ //五个以内
$ m4 u9 F+ h9 d9 k% f break; //打断, 打断当前循环
* y3 J! A4 Q2 u3 m/ @) y- Y Q }
4 _ f( I6 ^% ^! r" R3 i }
& f9 K& u7 [; \; ^# U V5 r$ C( D/ V* w5 y5 n& i
2. for 循环(主要用于几次的循环)
" N& z- e+ T$ e1 f, ?: t: U 循环控制2 `' z6 _3 g5 x
for(初始化表达式;布尔表达式; 递增表达式){
4 t' [+ U& b9 C$ a. M" t6 W' V# J //循环体
; J8 F! u8 d i. J5 m }* X- w% Z# Y, x# s! }
for(;;){8 d2 A) y& x, O+ b0 q& K
}
, M3 g& i6 ~; X! Y7 K' F. V- Z for(int a=1, b=3;;){
( L& f: E( ^( s( [ }
: _8 L% e! ~3 ~* p$ G2 F( v9 ?( a2 L) `. n* J
9 o! Y8 w* I) I7 x
Example:
# N b: n4 o: G for (int i = 0; i < array.length; i++){
F. s# e+ `- M( N System.out.println(i);
4 V p# p1 n' ^5 G# G) j* `+ w7 C }
- K3 X/ R( p. o2 S4 |7 a( @ C% a5 ?! d. t% C: E
3. do ... while7 |+ |3 M8 p3 H7 y9 F
do ... while() 循环控制; k0 a$ `0 j" ?! l1 i. ?6 G
do{$ C3 u, {% @1 q2 X+ V- U/ Y, G5 x/ s
//循环体) T/ U" F$ P8 F" t4 {0 ?
}while(布尔表达式);
9 L0 V9 }8 S; ^/ {5 | s+ j Example:
3 R+ `2 O/ a2 I3 C3 S5 |# { do{
! H' A8 e6 V9 R* E System.out.print("输入押注数量:");
, ~6 N9 Y1 h% w( w$ w bet = console.nextInt();
4 W$ [$ C+ |1 i }while(bet <= 0 || bet > balance); //否定条件( p+ [, a6 X1 m
, ?; i$ }9 ]# ~
4. java Array) y" S4 B \* c/ z0 t
1) 数组变量的声明
$ _# r o# d* A5 l/ q6 d! M int[] ary; 声明了数组变量 ary, 数组变量是代词,
" a' |. n; d2 \: B3 z, l$ m' f int ary[]; 为了与C语法兼容的写法, 不建议写法,
; p% s- L5 F" y( {4 b0 ~1 J- }; h8 X+ @( j% ^# J, j6 y* [
2) 数组对象动态初始化- k& W" A- c- v" D: v
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词
" T C6 P9 p6 ^ 指代了具体事务.. c$ ^0 R2 |$ k. q3 l: Y" k
数组元素是自动初始化的, 自动初始化为"零"值.
/ t/ {# s8 W# F& v6 n$ ^8 C: u8 \ "零"值: 0, 0.0, \u0000, false, null
9 p: Z7 ~/ I! F+ X; N6 N ary = new int[]{1,2,3}; 直接给出元素的初始化
( ?& {) ]" s9 q 3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化5 [7 O& ?) C9 h
* 不能用于赋值语句
; h4 j% R2 `7 { int[] ary = {1,2,3};' @" k U( l0 R% [
ary = {3,4,5,6};//编译错误
! w6 w: r: y; N( `; ?! `- D' k+ N2 }$ \& ]( Z: `; M5 A4 j
Java关键字: if, public, class, else, while. Y5 U1 o$ P5 | ^3 V8 D1 |& D
特殊关键字: goto, const
}% Y2 F/ n& {1 a- o java中 true, false, null 不是关键字, 是字面量!
1 q' w2 E& ]- @$ i# R8 }3 e0 ^2 V$ M
' g. @& P8 S v" @0 \6 | 4) 数组变量, 数组对象, 数组元素 ' H8 u0 R+ e+ y* n k
如: int[] ary = {1,2,3};& s& `2 U5 g! E( q: j& |
ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组
. y/ W/ u* @0 s7 {1 w9 z5 S {1,2,3} 数组对象
* D; p4 d8 b9 e2 N8 A 1,2,3 是数组元素
' a, N5 U" O5 p1 g
% Z2 ~) o6 N' J6 O, U+ C9 t S' Y( v 5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1
# L! h$ `3 a+ h, H0 p; j; i A 使用[下标] 访问数组元素, m/ s$ I. W8 @: z# f) Q
B 越界访问(小于0/大于等于n), 都会发生运行异常
/ b3 e% H, I" ^/ p( ~2 q C 使用.length 属性可以获取数组对象长度
5 X" }# _$ Y. \3 q7 f
* t4 P' g \; J x `" D5 数组的复制与动态扩展算法
/ x4 R1 K8 }7 y6 V5 l; D 1) 数组对象的复制
) k1 y: S" |5 f$ Z- d5 L, y2 Z9 x% e7 F$ r0 M U
2) 数组的扩展问题
. C$ M c4 U# r5 M- Q 1 Java数组对象的大小是固定的, 数组对象是不能扩展的6 h+ P+ U* ~* V2 m2 z
2 利用数组复制到方法可以变通的实现数组扩展; j% K6 g- \5 S- @( `9 l
3 System.arraycopy() 可以复制数组
0 ~7 G5 c. R# V, [1 h 4 Arrays.copyOf() 可以简便的创建数组副本
/ ]! f0 L7 \6 T( L2 ] ]% F7 v3 O 5 创建数组副本的同时将数组长度增加就变通的实现了$ t; P3 O0 L6 y5 c" p/ h/ O
数组的扩展
. O k9 ^3 e5 y) A5 u4 d6 o
& U) U: Y M Y9 {7 [, a 案例1 : 统计一个字符在字符串中的所有位置.
0 I& q% g' S- G 字符串: 统计一个字符在字符串中的所有位置
8 _; a3 W* k, ^% m; ~ 字符: '字'
* d* f8 Y; r( K5 Z5 e 返回: {4,7}
q) A8 {( l7 I& C( @
; @/ }3 U' w5 M/ d7 }. B2 T6) 数组的迭代: 将每个数组元素重复的处理一遍.
9 b8 m- f" K. G1 _8 s for(int i=0; i<ary1.length; i++){. Z" W* g# v- Y4 u. B
System.out.print(ary1[i] + " ");
% a& z s9 v! }8 h. P7 X( Q }
/ U" J; z1 R; N3 c
: R h# J L" p5 x2 m0 u 作业: 2 r9 v: U( b$ u
1 复习并且完成 全部 课堂演示代码, 添加适当的
3 C, j! E0 I0 e! ]$ c, M5 s$ V 输出语句, 研究输出结果, 添加适当的注释.
: C8 o1 H2 D, I: P; c 2 实现案例:" `2 A* ^& o! S+ E4 [8 c
案例1 : 统计一个字符在字符串中的所有位置.% l' P! ^! ]; T' G! D" G* e
字符串: 统计一个字符在字符串中的所有位置
! ^' F0 t4 t# n" k a* C0 N7 b 字符: '字'
! s0 s) S, J) b- F( O 返回: {4,7}* A6 [7 I: S$ D% q- w( V$ x. R9 Y
public static int[] count(String str, char key){}, O x: |+ H# I' M
7 ~" F0 c N. L& l char key = '字';
: c# E5 I, h" T' {; z; V3 Z( y3 L2 n String str = "统计一个字符在字符串中的所有位置";
# _! \- c5 A3 a int[] count = {}; + ^) y2 P' j4 c+ h* \! g" m- w+ W
for(int i=0; i<str.length();i++){( _0 h+ S# x: J% W/ b* S# E
char c = str.chatAt(i);
+ q% V; e3 t: } |0 I9 L! g if(c==key){6 p. F2 w: j4 y6 V7 l9 w
//扩展数组,
1 j8 U4 B8 n0 O: l count = Arrays.copyOf(count, count.length+1);, U. U- q! f) _+ l: x' J; E1 s
//添加序号 i
0 r6 W& u) p0 h( M* s. p count[count.length-1]=i;
/ M9 Z4 V6 ~# C6 x }
6 q" C$ B+ W% h3 P1 w' ?5 }3 n7 E }
/ i+ k, w) [) g2 M. y0 O
# a. r" r+ b/ m, ^
: {, H9 F" V- x, q7 s% N 案例2 : 统计一个字符在字符数组中的所有位置.4 b4 X" k: q7 J% a
字符数组: 统计一个字符在字符串中的所有位置" o% P! U7 J& O
字符: '字'
* Q- L! B. D8 E& d k/ n3 b 返回: {4,7}
* s/ |# ^+ d. {: U, ], Q/ s" P( \5 c3 o$ K0 \1 P3 V9 L0 n8 k# d
案例3: 字符串统计案例:+ U: T2 ? d4 s3 r. X" e
字符串: "123456789012"
) N1 R* ?% b6 F- ?" p 将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 18 k# F3 p' `9 d8 i
将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2# ?& }0 K2 b- P. N9 D+ M4 P
/ l: g0 y; c; ~$ H 案例4: (选做) 将一个整数数位翻转
# P; ` D/ Z2 _& K/ O( _' W; s& e 如: 整数 56123 int i =56123%10=36 q" x0 v0 v3 x) P1 P
int s=56123/10=5612
8 B9 a/ C8 u( Z6 x7 m g
& |* Z, f7 k" j. p9 I, o( U: ?( b) T) Y/ c5 S" m
返回结果为整数: 32165- L. ~( a3 C( a2 X1 n# u: ~
提示: 使用 %10 获取最后一位
. a3 C: j2 m$ B: f0 y& b" a6 Z0 x 使用 /10 去除处理完的最后一位
0 c1 T) K$ Q" T0 [' y6 b3 @; M0 p, ]1 C7 E3 G
|
|