该用户从未签到
|
1. while
, s0 \9 m) k. ] [9 A While 循环控制( U9 w, B( l! ]0 i& t
1 w# L$ r& X& _( j: | Scanner console = new Scanner(System.in);
# A7 g3 W* u; _# A while(布尔表达式){7 D( S" j# O) _. V# b
qty = console.nextInt();6 Q9 h% U: J% j* a. @4 H5 v
if(qty>0 && qty<=5){ //五个以内
! I& i9 F0 y5 u8 C, h9 t, l break; //打断, 打断当前循环
9 T: {9 |( l/ n }* e+ }& f$ N2 P/ C2 \
}
1 R7 u+ Z+ k8 ?2 a9 a3 e7 J$ `. N" m; [4 Q D8 [( J
2. for 循环(主要用于几次的循环)7 l9 w* @1 @1 R
循环控制1 Q2 E% f" P: K# C2 Q" ]
for(初始化表达式;布尔表达式; 递增表达式){* J: ]& X( {* Q# S% w2 R* X: F
//循环体
$ t- m% u# C" Y }! g2 [- Z8 B% I! B( H; \
for(;;){" M- A0 c$ I; m7 [1 D
}
! G3 E' R" h) J% m" x4 E for(int a=1, b=3;;){
2 {/ ~" ~& g1 v* \0 K$ p; o }
: f6 B* \! J3 _2 l s r! C0 D J# {3 V1 P& i
1 G- p, Q3 s" { Example:! y- F) p( H) i; x6 G$ ?! o
for (int i = 0; i < array.length; i++){% G. J, j+ F! ]
System.out.println(i);
. R8 {2 @1 k4 I, e o9 y2 Z: a) \ }
# [$ ^0 K. ^* w- m+ Z
, I, A: [- Y! q6 L) {3. do ... while6 v9 z; t* Z7 S3 Q9 a- h! K$ Y
do ... while() 循环控制
& p6 p# a! E# L5 @. ^ do{+ L# d; s6 @ b5 _3 S; x7 ^
//循环体& Y7 Z9 J) a+ x; U
}while(布尔表达式);
/ X) K! t0 j# ]* f0 } Example:
* }, M% b1 _+ i do{
" K. i& u: D6 x/ o H System.out.print("输入押注数量:");
/ ?5 v. J. x3 h bet = console.nextInt();$ S# L# n# [: C) S; ~
}while(bet <= 0 || bet > balance); //否定条件) B& s: t H/ ?
9 X6 a7 G- U7 e+ R k6 S. b
4. java Array
9 T0 [% l$ d6 ?% F& ]' H4 \0 [ 1) 数组变量的声明
1 M M" e/ U% J int[] ary; 声明了数组变量 ary, 数组变量是代词,
2 n( \1 w5 i' ]; _0 _ h9 S int ary[]; 为了与C语法兼容的写法, 不建议写法,
2 ?% T8 O* D9 @4 h' }3 d
; g1 t- f4 m+ y' ^. S 2) 数组对象动态初始化 S4 Y1 d# e6 l
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词# c5 _. Q% N6 L* h" ?: G
指代了具体事务.
a$ V* h/ q" H( a! x- N' ] 数组元素是自动初始化的, 自动初始化为"零"值.2 L0 [ ^! S( V( F4 q
"零"值: 0, 0.0, \u0000, false, null g4 Y/ l8 v/ j) h3 Y6 K5 \1 m
ary = new int[]{1,2,3}; 直接给出元素的初始化
) y: S' o: g2 c# D* _; V 3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化2 b( s. i! F4 r" f: K$ Y
* 不能用于赋值语句& R/ k+ U% ~( x @' y A1 T+ L6 }
int[] ary = {1,2,3};: T8 W2 ~+ }% T( h
ary = {3,4,5,6};//编译错误
9 {- V. U5 z* i! l# L* _0 R6 ^" N# F4 C# y H* H3 C
Java关键字: if, public, class, else, while" e& l' X7 R1 v' U( u
特殊关键字: goto, const
+ I: H: q! o- f4 t java中 true, false, null 不是关键字, 是字面量!# x# i0 w$ {* f# r ?
\! y2 s5 @8 }& |# ?4 G( ~" ] 4) 数组变量, 数组对象, 数组元素 4 N6 o7 B, K* Q- ~
如: int[] ary = {1,2,3};: n# S9 G/ h5 O2 H$ }8 m
ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组
4 u& m( g+ h0 F* C! f. i {1,2,3} 数组对象, a/ \* v; N! O$ s1 w
1,2,3 是数组元素1 H4 V' Y* }5 |+ `' t
* v) _7 M8 W' Z1 M 5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1
' w9 W2 y; Y6 h9 a/ K, @) g A 使用[下标] 访问数组元素- ? b; s- B8 ?$ Y- T/ K( v
B 越界访问(小于0/大于等于n), 都会发生运行异常2 G: q- s l. F, h6 K2 R. {
C 使用.length 属性可以获取数组对象长度6 `. T, l. `1 Q; D0 G2 |
2 k$ O: V& U, d1 @+ h+ z5 Q0 X5 数组的复制与动态扩展算法
% _1 v9 |+ o" d6 @3 p 1) 数组对象的复制
# X9 R% h: }# t" U$ V
8 R2 u. `, b9 Y: r3 g3 u" b* C; t- Q 2) 数组的扩展问题
& Z$ _# p' O; \& |6 k 1 Java数组对象的大小是固定的, 数组对象是不能扩展的& u S" f* X5 }# n Y% e; x2 w
2 利用数组复制到方法可以变通的实现数组扩展
) N! n! H7 I) L0 t! U0 \1 W7 d; X( ~ 3 System.arraycopy() 可以复制数组$ Y4 j$ f* u0 @# o# r5 A8 k
4 Arrays.copyOf() 可以简便的创建数组副本6 ]( B \! s7 b$ r
5 创建数组副本的同时将数组长度增加就变通的实现了
/ i. W8 R9 p/ N" l% [5 X9 J5 M 数组的扩展% }' d( w& N- N: L% `* t
, ]! ^* i8 u: n0 Z; X 案例1 : 统计一个字符在字符串中的所有位置.
# G: l; O) e5 Z5 K' e 字符串: 统计一个字符在字符串中的所有位置2 P% { p w" Y6 _& u* w
字符: '字'
6 x9 u: [/ G* P2 {7 l) y3 I) s 返回: {4,7}' M$ P! _$ P% P2 I/ _
7 F6 ~6 K! B( `1 e* X6) 数组的迭代: 将每个数组元素重复的处理一遍.7 O5 l. M# b, ]; k
for(int i=0; i<ary1.length; i++){
3 d! `& j | `% r System.out.print(ary1[i] + " ");( X0 d- q3 f$ ^8 s& h
}
8 @% v1 Y8 o$ K% ?9 ~. m9 W0 \' d/ \7 b* C7 @8 R j' I; }
作业: 6 B8 `4 p' m" E; M! S
1 复习并且完成 全部 课堂演示代码, 添加适当的
$ ]5 K# X) `6 a2 [4 G. j9 j 输出语句, 研究输出结果, 添加适当的注释.
6 l* d; A/ p! c A9 t' t( ` 2 实现案例:; x$ {1 c9 N8 |9 g$ w/ v
案例1 : 统计一个字符在字符串中的所有位置." h) ]9 v/ ]# O. i+ q& u# J* [
字符串: 统计一个字符在字符串中的所有位置
5 L/ O }# v* ]2 v5 r. g: U7 a 字符: '字'3 @3 W5 v' }: R( l: E$ F
返回: {4,7}3 c* m+ n% N, `
public static int[] count(String str, char key){}
# q$ d+ } Y- j f; ~
% M1 j Z0 D3 r' }$ M char key = '字';
2 C9 y c0 t# q6 e String str = "统计一个字符在字符串中的所有位置";
/ d0 x+ L' q, [! N( k int[] count = {};
( p* N \1 ^& _ for(int i=0; i<str.length();i++){; C9 F8 Y6 Z* u# E! x
char c = str.chatAt(i);# v2 T. G! w( J; |* ~
if(c==key){5 J8 r% k. H. d
//扩展数组,
' V" e. S# @0 ~3 F) x count = Arrays.copyOf(count, count.length+1);" _* R1 e, F4 z$ h6 a& f0 o3 E
//添加序号 i0 e" f% _' f3 Y8 v. n/ [3 g
count[count.length-1]=i;# m# S, p6 l! e( G9 |0 M
}
" n. X( A: B. q! G; u }
' g. d7 w) @7 F; k + M; a! ?: I( _% [7 V6 Y
( l4 V9 v4 I w# |; }6 U& f) l4 @
案例2 : 统计一个字符在字符数组中的所有位置.
9 J3 U/ l. g8 b5 p7 _2 k' @ 字符数组: 统计一个字符在字符串中的所有位置8 V( L8 g+ ^, E
字符: '字'" M/ q3 I* b2 _
返回: {4,7} R$ W! g% s8 Z- Q- q5 O
! k4 _) z# e3 B& P, W4 {; ]
案例3: 字符串统计案例:; n j! {8 { u# N6 { h
字符串: "123456789012"" k R6 Y( H/ ~" f( m
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 17 v# C1 t0 W: j& D
将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2
* ^6 b: s/ I7 V; H* ?0 K8 q$ \. D; \; `8 v# F" g, H Z
案例4: (选做) 将一个整数数位翻转8 e" y# x1 m7 |- U1 L3 ^9 C
如: 整数 56123 int i =56123%10=3
- I: o" z# M c' ^3 w int s=56123/10=5612
2 n/ }0 w+ }9 @0 b
+ Q4 k" ]4 J6 X2 C: o' l, Y3 }1 U' }% B% l+ i2 ?
返回结果为整数: 32165
' \- p0 u$ k. b$ F0 X 提示: 使用 %10 获取最后一位* y. w3 T! S/ L' l5 q0 @) L [4 V: J: c
使用 /10 去除处理完的最后一位/ b) x" q7 b8 ~; m8 U$ t
& c4 l9 ?; s/ Q- F' u
|
|