该用户从未签到
|
1. while
9 k0 Z; ^5 \; Y' l, ^- e While 循环控制/ h' o5 O5 [; L; Q" c% o* L
9 x/ |/ f6 H Z Scanner console = new Scanner(System.in);6 D3 Q: h( i! h( [
while(布尔表达式){
! x( k/ c8 O4 c j qty = console.nextInt();
5 D/ ^# U' u" p p! v% A/ N* u if(qty>0 && qty<=5){ //五个以内
% D5 S- R! V+ ^( u. e/ r* P. ]# \ break; //打断, 打断当前循环
* x$ L* O& f f" a& E" T5 M4 N }: Z# V2 J# u3 [& f: P" `+ \) G5 b
}
9 k( Z# }, }- B! @
& B: B5 |! @6 T' z2. for 循环(主要用于几次的循环)
8 S8 k# e" _3 Q 循环控制! f3 o& |% Z. o( t- Z
for(初始化表达式;布尔表达式; 递增表达式){; q2 I4 Y! J+ f: D- u
//循环体
9 y& y2 _7 n+ @( q }, s$ ^4 D: X9 K! I2 A5 g
for(;;){
2 }! `* u9 L; T5 q9 |5 X }. } K: M$ j0 V$ i1 ~
for(int a=1, b=3;;){* y) l+ A* x( o% z* I e
}
. P0 C' b0 F& f' Y5 x% B& Q- |" i1 J6 Q9 o9 E
% i- }& U9 S" u5 C8 W
Example:
3 D3 v* C) W+ R4 A2 r for (int i = 0; i < array.length; i++){
& n6 G8 [$ c3 T" K9 i3 L9 e' u System.out.println(i);$ ?- e [2 E, u0 f8 _
}
! U8 {4 s: i% }- R1 p
, B. _' O/ h! d, ^7 r3. do ... while
% G8 Y. v" k- ~+ T7 L* K) \ do ... while() 循环控制
" c" i0 V1 s/ ^( |) T7 h- c8 H do{
0 x' U, _1 ]5 Y2 ]; w //循环体
8 E/ x' N" g7 E) h7 Y( P }while(布尔表达式);9 L$ ?' Z( ~5 r; ~+ D
Example:
* g9 y: ]; J5 i8 K6 n1 W do{# Z: g) O1 I3 J, z: o0 E, |+ _
System.out.print("输入押注数量:");' N( l3 ^$ O. q0 Q0 n6 w. ?! K
bet = console.nextInt();
3 Q( E6 v+ n5 x. k x }while(bet <= 0 || bet > balance); //否定条件
! \ w1 S1 S6 [% j$ f; o" N
, s4 I5 k9 i2 H3 ~* E b! D0 H4. java Array" Z* l+ j5 U3 q' e$ F+ i
1) 数组变量的声明
5 E. ]+ C+ @% W1 {; S int[] ary; 声明了数组变量 ary, 数组变量是代词,+ P6 D; [- H0 o% @" P8 b
int ary[]; 为了与C语法兼容的写法, 不建议写法,
* l' ~2 H0 \. h% @- ^" W
4 \, @* d: D0 X R' n3 P 2) 数组对象动态初始化/ n3 g k7 i' w
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词6 b6 S! |5 H5 P
指代了具体事务.
! q5 a7 g) Q& R5 ?( z1 g* _0 z4 } 数组元素是自动初始化的, 自动初始化为"零"值./ U# _. _# }4 c. M, l' Z3 U
"零"值: 0, 0.0, \u0000, false, null
8 C7 O; D2 p+ a0 h, X0 z0 r6 G/ h ary = new int[]{1,2,3}; 直接给出元素的初始化- Q3 b0 U! g' J: j" ^" i/ W' n
3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化
+ W" B7 x+ b. i2 Z3 U p- k * 不能用于赋值语句
# Z- Q$ ]: n* X. d9 R int[] ary = {1,2,3};, B5 G2 K* i/ `9 F
ary = {3,4,5,6};//编译错误
* M. j. E: b# T. _# g5 O* I: R' C( E8 S
Java关键字: if, public, class, else, while
4 g. t) R% _+ U4 e" V1 T8 A 特殊关键字: goto, const* ]% A" L1 \2 E5 t; Z; K
java中 true, false, null 不是关键字, 是字面量!
9 m- S4 V4 s( @; a! Y. e b0 E
9 W9 v$ t; X( o2 Z4 s7 R% ~! H) k 4) 数组变量, 数组对象, 数组元素 6 P1 F! {2 [* F" ]( B, u
如: int[] ary = {1,2,3};& [4 N# x) ]2 ~& I. e b6 U$ T
ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组
+ e" k, _% S1 h: c4 P# Y {1,2,3} 数组对象3 w' }: ]/ S# r
1,2,3 是数组元素% O5 `2 \; d) I
3 I+ |" w7 k' R" q
5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1
: ^$ c7 `! C; Q/ x A 使用[下标] 访问数组元素
7 F, l" {9 Z: ?% V B 越界访问(小于0/大于等于n), 都会发生运行异常$ Y0 C8 h) x8 f4 Z' f% C; `
C 使用.length 属性可以获取数组对象长度$ w5 K7 N6 ~+ H8 u" k' k" Z# ~# A
$ X) w* b3 n$ S7 m
5 数组的复制与动态扩展算法
& B c- M$ ] V- Z7 s% O2 G 1) 数组对象的复制4 Y! m* T$ r# `' L& d% M
) @9 y5 `5 C1 Y8 W/ B# E( Y# R 2) 数组的扩展问题" K) a! z* Z8 `3 S& v
1 Java数组对象的大小是固定的, 数组对象是不能扩展的
" C) V( v" u" A( g* i, a 2 利用数组复制到方法可以变通的实现数组扩展
; F+ ?3 ?. r1 K, V5 O& I5 u 3 System.arraycopy() 可以复制数组2 L1 I- f6 N5 x5 \* \; \
4 Arrays.copyOf() 可以简便的创建数组副本1 {! w! \, E9 F, \- h: }7 S
5 创建数组副本的同时将数组长度增加就变通的实现了
$ Q$ @% Z7 J6 S# \1 s7 m2 n( L5 m 数组的扩展
* C& u5 k. i% Y+ Y' ?! U* s8 }9 b) H2 v: P- H
案例1 : 统计一个字符在字符串中的所有位置.9 i9 n! x: l" V
字符串: 统计一个字符在字符串中的所有位置# m8 {0 Y- T& h6 u6 [6 ~
字符: '字'
7 v" X$ z0 j" N) w$ l" b$ m 返回: {4,7}' n+ L: b, C' d& o; l
! q( V! {+ L) {1 L9 e' C X- w9 T
6) 数组的迭代: 将每个数组元素重复的处理一遍.0 k: m& [% F* e# N$ \& D4 D, {
for(int i=0; i<ary1.length; i++){
Q5 f# J( G. \ System.out.print(ary1[i] + " ");
) I% \7 }6 p8 j/ _. I7 Y }
! x4 X D8 ~" e1 q' {& [2 e% }3 K: Q
作业:
6 q6 D: p2 q! ~ 1 复习并且完成 全部 课堂演示代码, 添加适当的" _8 ~, B, O0 k
输出语句, 研究输出结果, 添加适当的注释.
E/ w& F; e6 v4 T' f6 V+ _ 2 实现案例:, Z. {9 B0 j; T
案例1 : 统计一个字符在字符串中的所有位置.
% [. }) p8 E! Q8 A2 @6 b 字符串: 统计一个字符在字符串中的所有位置; ?4 }$ ] V, u! T4 C! w% l, z
字符: '字'
# {+ {# u( n+ K' v 返回: {4,7}, K' ?( b6 w/ S. `6 O
public static int[] count(String str, char key){}
) {$ L6 G* i: n' B6 w/ E# |7 X
+ ]+ U9 n9 N+ { char key = '字';
$ q0 D" e9 k& j$ e2 o String str = "统计一个字符在字符串中的所有位置";
: d- T# u2 h y int[] count = {}; 2 U+ `9 x3 u: R0 w) E6 V
for(int i=0; i<str.length();i++){$ m3 l5 A4 F1 T- N
char c = str.chatAt(i);% ^5 n9 q2 }! z
if(c==key){. [. r+ M7 {3 r( U+ n( w0 ~
//扩展数组,
$ U% h# S* r" [' ?) G2 q count = Arrays.copyOf(count, count.length+1);* r/ |2 D |0 T% l0 J2 r
//添加序号 i8 ^% F& O6 U, y% ^+ }! x( E
count[count.length-1]=i;5 A4 m% |( @ X! j
}/ ^9 K) x& m5 n4 O% P: x' ^
}( ]( B2 T& V1 T6 r- D
3 s( M6 { ` E3 Q, z- Q& v( _7 N: e3 p& {, A7 M" O2 _! o
案例2 : 统计一个字符在字符数组中的所有位置.
# k' _$ s/ D' Q$ U3 T+ [ 字符数组: 统计一个字符在字符串中的所有位置) j4 M* K8 ]% c
字符: '字'/ H G! J* I/ b O0 s( C8 B$ s3 V
返回: {4,7}
9 t& D, b" B) O3 i9 |; \0 Q( v. e% c$ n. M! j9 o; |( Z5 Y& e5 f
案例3: 字符串统计案例:
, D/ y5 |) x( s; q+ n& X4 \ 字符串: "123456789012") S2 i! {; Y5 H
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1( e2 e; x. E$ X7 J* c
将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2. m$ `& q2 [; A7 Q2 r8 K; c8 u$ ~+ ^
+ q' @/ ~( U* H1 q* q |
案例4: (选做) 将一个整数数位翻转
9 `$ R4 V1 T# }/ l 如: 整数 56123 int i =56123%10=3
0 I2 f2 `+ u* j7 L- b( U int s=56123/10=56124 z: Y4 H- ~* C2 K! h- Z4 R
! K5 _# _1 E: i n$ a3 v
* N, E) r0 N- c$ ?0 U) z5 C# V" Z 返回结果为整数: 32165
& {3 K4 j$ O1 n0 J! L 提示: 使用 %10 获取最后一位
/ _8 K. |' ^2 I. s: F 使用 /10 去除处理完的最后一位
9 u' y% k' q' E1 ?7 P W/ N9 S5 r) s! Q' G. N- ?, S, ^6 q
|
|