该用户从未签到
|
1. while
; `: r9 j+ N# p: X! v# {& H While 循环控制8 Z, v. B8 r5 B, m( \( `
; T3 q1 O1 O. @2 U( Y9 J Scanner console = new Scanner(System.in);4 ?! V' f: Z# \- c( F. `* W/ n
while(布尔表达式){
f5 S0 e; ]8 M: R$ F/ H qty = console.nextInt();
4 S9 p$ H5 s: w4 p' ~0 X' p& I. c if(qty>0 && qty<=5){ //五个以内
% o+ o( D$ c( w) j8 `8 ^ break; //打断, 打断当前循环. |* J, ^9 T5 I6 b
}# }. R# c8 F2 n8 ~( n8 |
}
+ I1 ~% F+ Y% R t8 H& i7 J" ?; j J; @4 H/ v
2. for 循环(主要用于几次的循环)" a, t) \4 {: C" a- m: G4 }& Y
循环控制
9 g% D' ^ j* k for(初始化表达式;布尔表达式; 递增表达式){
3 \* }) v+ y% D //循环体# N( }* a, L" F, ^
}
2 f( @/ @4 ]$ C$ r0 ~7 k for(;;){) F7 s# w n: c) Y
}
1 y; `1 I: T7 w: W/ F: H2 n/ y& v for(int a=1, b=3;;){
6 {* V3 Q" z) Y9 Q }$ b. o6 a w- R3 S* ]& G% N5 a8 V& o
& g& j) t9 ~$ A- a& e9 S A9 d5 N2 f& n9 [" m
Example:
+ x$ o) o) }2 ]$ @9 \. a4 W0 {9 ` for (int i = 0; i < array.length; i++){
/ J9 T9 Z8 _7 o5 U! F System.out.println(i);
* u2 L3 ?- ?7 C5 z1 P/ Z }6 j9 \% g( C C8 [4 i! m
0 |' }0 G, M6 V3. do ... while
' [ Z2 N8 o- n7 C/ |8 h, h7 x do ... while() 循环控制& W: I9 v- u& [$ T7 o
do{
" G: [1 T" J, }# A7 N //循环体
% f1 F* ~7 P4 v5 Z& f" b }while(布尔表达式);
) l0 @' W9 m8 z, ?& R7 D( T Example:8 X3 P4 }7 h$ ^5 O: H' ?
do{1 j4 [4 w/ B% @" b# I
System.out.print("输入押注数量:");
+ w' |# {8 N+ w$ w& U bet = console.nextInt();! z* f P7 h" l5 t& V+ F
}while(bet <= 0 || bet > balance); //否定条件
" [8 s1 n/ q; E Z( m
. z' p: @5 s+ |; g) k. c4. java Array
" P0 U7 t' d9 a 1) 数组变量的声明
( w% ^) {; F. x6 P+ x: |8 V1 E* o1 _ int[] ary; 声明了数组变量 ary, 数组变量是代词,& \+ C( B7 C$ x. Q+ i
int ary[]; 为了与C语法兼容的写法, 不建议写法,0 K& W! c' [6 F; N. F
* [( K9 D0 h/ h% Y7 @
2) 数组对象动态初始化' j7 D0 {- b2 D9 e! L
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词
. p% _" g) m+ m) _8 ` 指代了具体事务.7 _% @, Z/ K, K
数组元素是自动初始化的, 自动初始化为"零"值.
$ M9 `' m8 s6 v# P5 ` "零"值: 0, 0.0, \u0000, false, null
, C& G$ u$ y4 G! N9 G6 B ary = new int[]{1,2,3}; 直接给出元素的初始化
$ n3 r* K8 g) u& t6 ~ 3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化
- @# S. V; `" X- R6 ~& W/ z * 不能用于赋值语句' ^" i; `. E0 x, f& u* \ h" E& [# S
int[] ary = {1,2,3};
( k" t8 s7 }! g) ]) t' e, Z9 F4 \ ary = {3,4,5,6};//编译错误9 W, G! D* [8 }1 X2 z
% U( P X) ^" R" Q" K, }1 Y7 V
Java关键字: if, public, class, else, while
{$ o; {2 q: ]2 K$ r6 X0 j0 Y& H# i 特殊关键字: goto, const C( O4 k2 ^* {
java中 true, false, null 不是关键字, 是字面量!
1 N" A4 L6 u7 p. ?0 [& l8 }
7 k* P9 I& }' u1 H8 t1 _ 4) 数组变量, 数组对象, 数组元素 # Q* u' H! K2 Z6 x1 r8 Z
如: int[] ary = {1,2,3};& ^2 J' E2 S7 B7 `/ N
ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组
4 @9 V+ a( ? Z6 S {1,2,3} 数组对象
* ~) ~% u" k4 M1 x! [ 1,2,3 是数组元素
( u8 q6 d! p% A4 p
9 Q# I- W" N4 }* S# G# Y# S0 i 5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1
9 o+ m4 U2 E) |2 C5 s- x2 d8 ~+ C A 使用[下标] 访问数组元素- H) u" Z l1 @1 G( n8 e* _: O
B 越界访问(小于0/大于等于n), 都会发生运行异常
% S( \ e+ f! h8 { x C 使用.length 属性可以获取数组对象长度9 A% E; {3 y; N9 S* A
4 k L" g2 B; b& E( }, W; {5 数组的复制与动态扩展算法
' t# D) w- w9 U2 g, m 1) 数组对象的复制$ }9 V. R4 |$ C* D" q
. x* O$ Z# e \% O1 K& w, G5 M+ s5 J 2) 数组的扩展问题
* Z* P! Z" W% A$ n/ N 1 Java数组对象的大小是固定的, 数组对象是不能扩展的
. m9 Q3 s& b/ H' r8 N" ` 2 利用数组复制到方法可以变通的实现数组扩展
3 H: B/ b1 t1 ^6 v1 R2 j 3 System.arraycopy() 可以复制数组
1 H% V& a+ s) o# @" H& [ 4 Arrays.copyOf() 可以简便的创建数组副本1 f/ ^6 U. c% l' [% Y3 P
5 创建数组副本的同时将数组长度增加就变通的实现了: M% J3 B! S1 A
数组的扩展 U9 y( K6 W* N3 T
6 a- S+ ]8 S; a; J2 o$ A v4 v 案例1 : 统计一个字符在字符串中的所有位置.1 a5 c! O5 f* f( B( W; j
字符串: 统计一个字符在字符串中的所有位置
% i9 ]* O6 E+ L 字符: '字'
6 q! g% e3 _. b! C 返回: {4,7}
) e2 j5 T4 R4 D( ]$ A7 U0 ^& y7 S1 z- X6 ]
6) 数组的迭代: 将每个数组元素重复的处理一遍.( W6 n' I7 i6 O3 z
for(int i=0; i<ary1.length; i++){: Y% z0 t& d0 |- F T
System.out.print(ary1[i] + " ");
- p8 F* B. b, E2 Q2 C( w p. ^7 m# s4 R }# i# }; @& ?( B# a. N& M
$ Q& ]" {- U& C5 Q 作业: 2 C- Q1 G" C4 D6 g+ e. y6 P1 a, c
1 复习并且完成 全部 课堂演示代码, 添加适当的
# J) G; }/ m8 f) [ 输出语句, 研究输出结果, 添加适当的注释.9 z- ~" e6 A* Z, {) s. a! O" v1 j
2 实现案例:* p! s: B3 u* Y
案例1 : 统计一个字符在字符串中的所有位置.$ T' T% H" I9 {* I- A; `3 p
字符串: 统计一个字符在字符串中的所有位置
- o% w7 ` K. j9 |4 J 字符: '字'4 j, k0 }, U4 f5 A8 J. k
返回: {4,7}; U# C/ w' H. H: m: o
public static int[] count(String str, char key){}' R& U3 r+ P( n0 H$ m9 A# o
8 n& ? |& i. k/ c
char key = '字';8 C0 }: t& t0 c1 q7 V7 k4 B: v
String str = "统计一个字符在字符串中的所有位置";* r+ }! w4 E, K i( v
int[] count = {};
3 N. x/ ^, b+ i- o7 w0 u J for(int i=0; i<str.length();i++){
/ g2 C6 i! ]. l5 R, `, b char c = str.chatAt(i);
0 ^3 N1 _2 `4 {5 H/ V if(c==key){
8 x* {0 ?; r( T //扩展数组,
* ]1 u( _5 k. Q/ Z count = Arrays.copyOf(count, count.length+1);
) N3 O4 [! h& y //添加序号 i1 B$ n( h! D1 N9 w+ L6 S4 ?- H2 k
count[count.length-1]=i;
( L' W3 ] F5 o( y8 T }6 f N+ \$ [" R( u+ ?
}2 {- }5 W+ f. { D) _
% d2 Y" ^9 A+ D" F. V6 ^8 y( k, l& |) ]# t ?
案例2 : 统计一个字符在字符数组中的所有位置.
* X' ~+ T; T& t0 o6 q5 o 字符数组: 统计一个字符在字符串中的所有位置
+ s8 t, e; E6 N/ R2 E, U 字符: '字'7 f" b3 x' J, c2 m4 D& K+ b3 A
返回: {4,7}
3 @! \' x8 u: E1 n7 H6 t) U! W' O/ b- c9 m1 e, }2 E6 B% t
案例3: 字符串统计案例:
6 R, D; W6 q$ I5 _5 A0 ?: e8 X4 c 字符串: "123456789012"# {' i8 G2 A7 S; Q- g
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1
- h. D1 d+ b2 {3 a* l) ]" i 将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 24 [9 e: ^# M% s3 S" _) L- n% d
0 ]" _2 w4 H6 F) ^, b
案例4: (选做) 将一个整数数位翻转
/ I' Y2 w5 o1 K2 F 如: 整数 56123 int i =56123%10=3
5 ?* a: h$ f7 c. s! p int s=56123/10=5612# T( W R( F& z0 o
- ^' N& B: \$ n! F# v L; b& H. t0 c( z; ?. v
返回结果为整数: 32165
$ j, p% p' x/ `! c8 ` 提示: 使用 %10 获取最后一位1 ]* ]8 s q( ~2 R
使用 /10 去除处理完的最后一位' g0 U% O ?, Y) W* u
. _! H3 Z' B$ B |
|