该用户从未签到
|
1. while
) Z4 X& G, H0 i While 循环控制
3 p# a! ]/ x) I2 O& h0 ^: L: C+ C _, B
Scanner console = new Scanner(System.in);( d8 ~1 n' {4 g, A- |/ c% t
while(布尔表达式){
5 A( I7 ]4 a6 w3 l0 c: `" P qty = console.nextInt();
+ ^4 m: ` f5 l+ R8 ^2 ]8 G if(qty>0 && qty<=5){ //五个以内" ]2 r6 c9 p6 ^( ~& N6 f# a4 ?
break; //打断, 打断当前循环
0 O4 y' B1 V9 v0 z- F }, H+ @/ A; c/ ^2 _; \
}$ f1 y! x3 e; |2 o6 V) L1 u) I
1 U' `7 ?/ o( O1 s
2. for 循环(主要用于几次的循环). S# u) v& l% c! ~2 X {" a. D: k
循环控制, `+ i: A" b3 _6 f9 d& G) Y8 L" u# H
for(初始化表达式;布尔表达式; 递增表达式){
: ~+ f, B! p2 [7 U ^8 r //循环体, i0 {( l" O2 ]6 G$ n1 B6 Z0 h7 k
}6 N! ~* Z+ E1 S0 ^
for(;;){1 N0 N+ y5 L) F4 _; o3 S* [4 W
}
! R0 I ?" u/ ]9 J! w: g$ c for(int a=1, b=3;;){' s2 ~7 X) }, @) K" w4 O6 `0 l
}4 R: ?# X- c% Z$ p: i
k2 I* q) M0 X$ \% u; s( J
% @9 |, ~ V; n ~* E' m Example:
! n0 R/ u- a4 I8 M" X1 g: ?3 b for (int i = 0; i < array.length; i++){) |3 z5 ?8 `+ N. {
System.out.println(i);
$ t' F5 D: n; }% z5 z- ` }
4 a# G9 i% }: S! c8 W
1 ]* ^9 o- `0 \4 B" ^3. do ... while
' K+ R& J# x9 U8 W do ... while() 循环控制% y8 ^* c/ l* D' S
do{) }+ \! ]& e, O& e; B, N- o
//循环体
$ @" n/ g/ l% S1 P! H& M+ V1 C }while(布尔表达式);3 g9 c: O. y4 d; S" f$ s
Example:
1 H* s% P: c9 o do{
5 u# v2 ?4 o: `4 t( U+ B8 ? System.out.print("输入押注数量:");
m, J4 z2 Y* l {& |# J3 C" b bet = console.nextInt();
& a% c: k" u7 Q' | i* J. u% j }while(bet <= 0 || bet > balance); //否定条件
1 u9 j: U: V! Y! e
4 q3 Q5 }. t3 A4. java Array s, J7 d& J! q5 r) F( H' E1 \ C
1) 数组变量的声明
2 l6 ?/ \( Z" {: b. g7 x% n. B) R int[] ary; 声明了数组变量 ary, 数组变量是代词,. K3 m' ]9 j+ z6 _3 v9 r# C
int ary[]; 为了与C语法兼容的写法, 不建议写法,1 W( o( Z! l: n/ _" G. V
! u$ z8 m3 y! w! ~/ ]
2) 数组对象动态初始化& b. I# B; x; `' V- E
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词* I) k0 E3 D9 h2 d% C/ K h/ ]
指代了具体事务.' ~3 y2 {1 g( r
数组元素是自动初始化的, 自动初始化为"零"值.7 ]" u2 b, ?' x/ D; [: ~
"零"值: 0, 0.0, \u0000, false, null% y5 {. M. [8 g0 |$ Q; _
ary = new int[]{1,2,3}; 直接给出元素的初始化9 j8 q/ D( ]2 p. D i
3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化2 Q; g# ~/ b9 v- L4 n
* 不能用于赋值语句
) [% k# c7 E+ k4 f int[] ary = {1,2,3};4 ?# _2 ?- M* \5 l4 e
ary = {3,4,5,6};//编译错误
' p$ X' {0 @! d1 f& K |
" n/ Z/ x9 v$ ?( M Java关键字: if, public, class, else, while
/ f" u o7 z, u8 Q1 w 特殊关键字: goto, const
- r, o. |4 E; I! a: b* ` java中 true, false, null 不是关键字, 是字面量!3 [2 B9 x6 |8 T" G- ]
! `0 v2 z3 ?( x2 e 4) 数组变量, 数组对象, 数组元素
% d8 K% v& @- J( X 如: int[] ary = {1,2,3};
: w! W# [3 ]' { N$ b& v/ m ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组* g: B8 l) v9 z0 M; I7 z! H& C
{1,2,3} 数组对象
) C$ r' t# S, n4 S# Z5 ]' a 1,2,3 是数组元素. y' Q8 k! G( Q q
m F: y* Q N' @: u
5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1 4 ]8 \9 y4 r9 ]% P+ d
A 使用[下标] 访问数组元素
. v' T7 V6 R5 o0 G B 越界访问(小于0/大于等于n), 都会发生运行异常5 o. b9 x! {+ z. R& L: ^
C 使用.length 属性可以获取数组对象长度
9 c7 v$ w" G; t5 b
) N+ z; j& ?' e) ?5 数组的复制与动态扩展算法9 R7 Z0 v2 w9 y5 o
1) 数组对象的复制
$ p* D/ c3 T% B7 x8 W" V$ L
3 ?9 T! y6 E+ c8 v 2) 数组的扩展问题
) d8 _- H5 b2 j 1 Java数组对象的大小是固定的, 数组对象是不能扩展的
9 S$ G$ [( x8 w# |0 s, K6 `; v 2 利用数组复制到方法可以变通的实现数组扩展! X8 P) T f2 P' ]* c( @/ S: g% m
3 System.arraycopy() 可以复制数组
. a/ i+ g$ F/ d* j" \1 | 4 Arrays.copyOf() 可以简便的创建数组副本% V, Y; B: S7 M+ ]2 ]
5 创建数组副本的同时将数组长度增加就变通的实现了0 G8 x$ \+ n) C1 ]6 [
数组的扩展
; Q- X! ]. b* w6 [" B9 x8 d1 O; q5 K. _! F: G( {# `
案例1 : 统计一个字符在字符串中的所有位置.8 D& V- H) Y7 T- v* d/ \! F
字符串: 统计一个字符在字符串中的所有位置# k% k- |2 o. {
字符: '字'; Z' s6 v* ?% m$ }. A( a1 g
返回: {4,7}
# }" t8 _- f v! P2 t7 D3 P0 V# s( r
% k1 D, \# f5 K& [- j) n; W6) 数组的迭代: 将每个数组元素重复的处理一遍.- z3 f, p6 z, z
for(int i=0; i<ary1.length; i++){0 D: q1 V. X4 e4 L: ]
System.out.print(ary1[i] + " ");4 z) Y" |8 H+ ?& a, w8 k
}+ J( ^2 {: e: M. ` Y7 @: P
# q' r" @4 ~- s; F% J( l
作业:
7 v' c! c# H# t8 M$ b 1 复习并且完成 全部 课堂演示代码, 添加适当的' v! E2 Z3 ~- x
输出语句, 研究输出结果, 添加适当的注释.
/ s" @+ q6 q$ z1 k 2 实现案例:
; j9 o% G7 U4 h8 @* R; k 案例1 : 统计一个字符在字符串中的所有位置.
) r9 B" \4 Y x3 b) _ 字符串: 统计一个字符在字符串中的所有位置
, W% v4 c/ z9 L/ U 字符: '字'
8 s$ r4 w$ e! }8 U- @! x0 D, ?5 V 返回: {4,7}: j1 B8 z, G# y) E" |
public static int[] count(String str, char key){}: v7 j% E4 p; e& R: l" N
9 R' E- `$ Z/ I# _6 F/ y char key = '字';- q. {9 h3 P: W) x8 w) T; Y
String str = "统计一个字符在字符串中的所有位置";
- M& s, y& G* ]) r' a8 v. }& n8 L int[] count = {};
5 `) i* E3 D a, \" d5 }- t: [ for(int i=0; i<str.length();i++){+ T6 K' D) z3 k" ?% s7 ?
char c = str.chatAt(i);5 q" I! I0 C5 N7 _" I
if(c==key){
9 ?7 p7 d4 V; R0 A1 H* I- p //扩展数组, & \2 F5 i2 t3 a2 {& g0 h
count = Arrays.copyOf(count, count.length+1);
5 `! I- r5 |; `1 i) [; E //添加序号 i
* B! w$ M7 @( y$ w# j; e4 @0 V) i count[count.length-1]=i;% m! b1 s' O4 I6 _* F4 K4 { F
}+ E. v; S) Z/ q" v; L
}2 z# |* I+ y, u2 y( ~' ?$ M4 ]
+ `2 l; c A! B$ z8 [* r' G+ B$ i8 }
; G. e9 `6 J" q( o) }( S, S 案例2 : 统计一个字符在字符数组中的所有位置.* S" s1 q `$ }) ^
字符数组: 统计一个字符在字符串中的所有位置$ [4 h2 ]* h# S( C/ U: _
字符: '字'
& e$ N! Y* V* r4 k$ U# Z! A 返回: {4,7}
" f% z# w( h! @) j$ Z6 o4 E9 p8 A4 e# g4 I; A' M+ l
案例3: 字符串统计案例:% @# |6 U( R' Q1 a! y; p& J
字符串: "123456789012": c% `4 p2 x \. x' [
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1
* D& N8 }5 v3 C' I" O 将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2 A& I2 E5 I9 n, K
$ a: P6 D" U1 p" i 案例4: (选做) 将一个整数数位翻转
# ?+ _! `$ e: r/ h) Y 如: 整数 56123 int i =56123%10=3
6 Y0 X# B0 ^6 q( U* f/ j% M% c int s=56123/10=5612
% p& V3 Q! S! M$ _. |2 V, D, _
7 t* H, l. ^& F* M2 K
: e2 M3 L( z1 v 返回结果为整数: 32165
4 b& B/ R/ G8 ?+ j8 i! y5 \4 g& H& k 提示: 使用 %10 获取最后一位
* I) M6 c3 K6 \5 D+ O9 T 使用 /10 去除处理完的最后一位
9 v; x7 C; P" n$ n: R r. M, W3 `& P7 C% s
|
|