该用户从未签到
|
1. while
! ]/ L9 I2 H& `. m While 循环控制" }7 S+ ]" K8 t5 @4 \1 c P0 A' y. E
4 F/ R/ x' z) I Scanner console = new Scanner(System.in);
: y! }1 T* ]6 S: F2 I- p while(布尔表达式){
8 q* B0 @' D/ L, e% T4 `* w qty = console.nextInt();) ?* a; t3 q# @+ G" {2 X' }
if(qty>0 && qty<=5){ //五个以内8 n" Z; b8 D5 L. p [% K% _( I* o
break; //打断, 打断当前循环( a6 F# O3 l6 t$ g2 w% n" ]- W
}+ D1 a5 [* d# T# T7 }1 z
}- A5 W r9 r; g1 \4 H
% a# p) W1 T* I8 ]8 b8 G4 ^
2. for 循环(主要用于几次的循环)
9 o4 Z# b: M; K6 z# u1 | 循环控制
. U% Z1 [) @/ t1 j% Z% d for(初始化表达式;布尔表达式; 递增表达式){* ~' _6 I! G5 Y
//循环体/ P2 |# |6 O' J8 {( [
}! Q# \5 y7 k1 X% L# j! o) `3 l
for(;;){6 o* s5 V0 y& E1 b# @
}9 |9 V. H. b$ ]' e1 L
for(int a=1, b=3;;){
4 \2 Q$ [$ f& J }
8 R# X& B6 M: b0 n, n3 g' Z! c! a2 O4 H3 L# f% A
5 P: p- D( Z- q; A. g+ ^, J3 f& } Example:
$ q- o. E3 ^, S+ h- g9 Q2 u- ] for (int i = 0; i < array.length; i++){. k* i* K4 K1 \( j6 ^
System.out.println(i);
# i* T* E; ^0 O7 T3 C }
l6 V3 l1 X* J* I) b+ q8 Z
: T3 F0 W9 b- l* F3. do ... while
* t3 Y ]8 B' v: ]9 b do ... while() 循环控制
0 H* W! x6 C, J4 l5 I! i" i8 J/ e do{ B. j L4 x& @1 f( N3 C8 Z
//循环体
/ s: \; B% n% B4 U }while(布尔表达式);# l+ E2 @8 t1 M+ Y) y9 N
Example:
" g0 N1 V6 M( l$ o* o; R do{+ S% R( y+ P' ?2 ^9 l' u
System.out.print("输入押注数量:");
& N# p# K X4 d7 }( |9 Q bet = console.nextInt();! V: q$ A# m% Z+ n
}while(bet <= 0 || bet > balance); //否定条件' q A5 g/ g2 v. {5 k4 d) m
& f( M$ z' l2 K1 t& O4. java Array# ]2 w. j+ I2 `1 ]
1) 数组变量的声明5 H8 Y+ f7 ^# c
int[] ary; 声明了数组变量 ary, 数组变量是代词,
+ P* Q/ z0 C \9 A. w4 D7 U1 f int ary[]; 为了与C语法兼容的写法, 不建议写法,
* Z; r$ e9 c7 Z8 m% I+ ]2 H& f) C; A9 \, V0 i
2) 数组对象动态初始化$ _6 r7 I, b; _5 m5 n( K* Q G, M
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词; G1 ]$ F- h) E# d
指代了具体事务.
7 I- R3 i* ?6 s3 ^' w 数组元素是自动初始化的, 自动初始化为"零"值.
0 M+ E" Y; K5 I$ { "零"值: 0, 0.0, \u0000, false, null
; F! R- K3 ^8 G! h. } ary = new int[]{1,2,3}; 直接给出元素的初始化* p+ u5 B* s& T! d4 |8 |
3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化
: O/ D+ `1 I9 F, [% f, J4 w. ] * 不能用于赋值语句( _/ |* |$ s( J% d' g. U
int[] ary = {1,2,3};
/ @6 @) D2 Y+ }( \3 } ary = {3,4,5,6};//编译错误
0 V% N# l3 m/ o1 O% W% k$ C7 C0 y" V) Q1 w
Java关键字: if, public, class, else, while
$ D& g8 C3 Q" T% F' ~0 T' V1 j 特殊关键字: goto, const
8 s J% X+ N. f0 p5 a9 v java中 true, false, null 不是关键字, 是字面量!6 @' P( x- _; u3 Z5 F: X% _9 I* t
; M) u& l% W8 g# ^( s& B
4) 数组变量, 数组对象, 数组元素 4 `2 |, ]; N) Q F
如: int[] ary = {1,2,3};
! j$ ^' V1 p: q( x ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组; J8 @ {2 h# F0 s3 w0 ]" _( x/ p
{1,2,3} 数组对象
/ j4 N) S* P+ F 1,2,3 是数组元素
' c+ V# ~% a& _, X
% n! r0 o: P5 O7 M5 X9 z2 s 5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1
, T9 I6 s# z+ S* f" f9 ]# B. d$ {% R7 \ A 使用[下标] 访问数组元素
5 M* C2 d% j( U1 I1 c$ Y& [2 x B 越界访问(小于0/大于等于n), 都会发生运行异常0 F6 Q! A7 F, ]$ n! }
C 使用.length 属性可以获取数组对象长度) S- D4 r7 Z0 o) \1 m$ j7 J4 m
+ R; h5 ]4 q7 h" w. D, r# E5 数组的复制与动态扩展算法/ c3 z1 ~6 O/ ]8 `4 l4 K
1) 数组对象的复制: l) o* f) f/ w5 G$ u" z& T
/ S4 L5 d o: g! }4 ?
2) 数组的扩展问题
5 N9 J* M1 h& _1 q8 P 1 Java数组对象的大小是固定的, 数组对象是不能扩展的
9 Y9 h( r" l+ c& B d4 w8 U* H& O 2 利用数组复制到方法可以变通的实现数组扩展
: h i N0 c' P 3 System.arraycopy() 可以复制数组& ]& M0 e% }3 X1 E
4 Arrays.copyOf() 可以简便的创建数组副本
) z: O6 ]* _( D+ K( z: Z 5 创建数组副本的同时将数组长度增加就变通的实现了, N H/ c+ _, t/ i/ X
数组的扩展& u9 l+ x! w) [7 }
1 Z' M4 U0 m8 | 案例1 : 统计一个字符在字符串中的所有位置.
/ T' I% f3 K0 i! t0 n2 q 字符串: 统计一个字符在字符串中的所有位置1 W6 y5 l5 L0 h$ C i
字符: '字'
$ N0 z0 A4 s( E 返回: {4,7}( Q& W" L% l, J4 C
7 k. M3 t4 ]* K5 y$ I1 v; a
6) 数组的迭代: 将每个数组元素重复的处理一遍.9 j" Z" {$ ?+ K$ o
for(int i=0; i<ary1.length; i++){
2 K8 V' F; z5 _/ s4 l System.out.print(ary1[i] + " ");1 B6 [- ?( s0 \' r- J4 p+ g
}
- I, q0 G! ` V) f% r5 f2 d. X( d8 E2 G
作业:
; ~7 G$ C, Z; S, c 1 复习并且完成 全部 课堂演示代码, 添加适当的. y( T @; s4 D' o
输出语句, 研究输出结果, 添加适当的注释.
! S1 l& G) N9 f4 B9 x9 @ 2 实现案例:' j1 [" v5 D3 q0 R( @ @
案例1 : 统计一个字符在字符串中的所有位置.. i3 b: u0 u" L2 G3 M1 \& ~
字符串: 统计一个字符在字符串中的所有位置: ^* E4 N- Q1 c/ |; U
字符: '字'7 ?. F8 a$ ^& u
返回: {4,7}
9 d( t' p7 N# J' U) E& C! T" n public static int[] count(String str, char key){}+ l2 P. L6 h1 {2 o: r/ g, g$ m
6 {% J9 R/ b w' S+ v
char key = '字';: b4 T. F) ^% k6 k H+ r8 G
String str = "统计一个字符在字符串中的所有位置";
" r; F" W6 U- j2 H# s) ` int[] count = {}; , w2 f( a$ O r$ l
for(int i=0; i<str.length();i++){1 n w* t4 m, X! u
char c = str.chatAt(i);5 x) c- h' F4 K) e; Y
if(c==key){
$ U; \6 `7 T/ z8 i5 Q: e2 P% s //扩展数组, / s. a% b! T1 @$ o, j
count = Arrays.copyOf(count, count.length+1);, D5 M+ n- ~3 l, O
//添加序号 i
$ D% q9 t0 G; G* T% ^6 Z count[count.length-1]=i;: j" M6 n4 c; P0 U8 j' |& M
}
3 |. x0 u7 e$ i' M } @% ` ]4 x9 x8 ?- G# o7 n, G
' _! i( s0 ?: ]% b. b! F7 u
1 ^8 p) P; l- N4 |0 H 案例2 : 统计一个字符在字符数组中的所有位置.+ M- h s: r8 z1 ~8 M
字符数组: 统计一个字符在字符串中的所有位置. U N# ?$ l. C& E9 N7 [
字符: '字'7 M; Z* R% j `/ w1 t" _( i1 w
返回: {4,7}
! E! ^8 @: `& f) Z+ S! n; O" z1 c; e' d
案例3: 字符串统计案例:* ]* v! N: H$ \" s* {1 [6 ~
字符串: "123456789012"
3 ]7 U) u# w% ?( [- Y0 e: {4 F 将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1
- l& s4 V0 h/ J2 y% @ 将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 29 ^ u4 n3 T- D% s7 M; k
6 s7 z# A7 l3 n0 N9 c, W6 ]3 q 案例4: (选做) 将一个整数数位翻转
9 S# @% W2 W8 @9 i' M, M( ] 如: 整数 56123 int i =56123%10=3
* d9 _9 ]+ U4 F int s=56123/10=5612
$ a3 }% T$ m- \9 l& T& N$ y' G
3 s) a0 m! ]' z$ I) k6 {3 b% u4 k7 b/ a# `
返回结果为整数: 321652 C9 r+ J/ \( _) ^7 C( [# L
提示: 使用 %10 获取最后一位
5 B' Q" v5 g" H. Z3 X9 t- o: L 使用 /10 去除处理完的最后一位3 f' P3 I; b, ~- c# T
/ x. D% K8 A; E% O: U; l6 w& S
|
|