该用户从未签到
|
1. while
6 C3 j2 U, @) P3 |9 b" V1 \# {2 Q$ W While 循环控制$ c* H$ \7 i$ e
5 O2 [/ F* d4 x4 Z3 S9 e Scanner console = new Scanner(System.in);
5 S9 m* F! y! K. O; y while(布尔表达式){+ B. Q' S5 h& G7 @9 j2 P
qty = console.nextInt();
8 H/ _" y7 U' {& C- D& @2 m( W4 Y if(qty>0 && qty<=5){ //五个以内% k* K% _4 G* ]" `5 T+ c( e+ C* ]# E
break; //打断, 打断当前循环
2 ` f: C% n8 j; @% K }
# o9 C3 [; f0 f4 `4 `6 d& R% b }3 H# ]0 }" l' P3 Y; J+ y2 |
# [' I' ~2 ?# [# N2. for 循环(主要用于几次的循环)6 C7 i+ E2 I# ?) g1 A7 [# ~
循环控制
# h) ?3 l+ c U2 I% u9 _ for(初始化表达式;布尔表达式; 递增表达式){ j; L/ X# {( e- i
//循环体
) V1 E6 {4 k# g- ?0 t0 S% z }
. h( ? d- j) a for(;;){7 |7 K* b6 c( F# _& r: b) w
}) q, g* y+ v* l( I
for(int a=1, b=3;;){
! D# X3 \/ @% W( q+ f }; ~5 C. k, g, G0 X |7 @8 T
2 Q, Y+ d* d; d v, B6 ]% s( J6 Q, i7 [# |, P8 l* N
Example:
Y4 g. L( ?8 }9 T2 Y for (int i = 0; i < array.length; i++){
g3 c" G4 c0 `) B2 r! l- H System.out.println(i);' M6 @4 Z" l" C2 @# R# }
}4 {9 u) Z# E& N; w4 H
6 _) ], {7 p4 J9 L) }
3. do ... while1 g" \0 ?4 w2 g# a
do ... while() 循环控制. V! f& |. |, Z0 m
do{
4 u6 q& M _0 m" v: L# z //循环体# _8 B, K& z3 _$ G
}while(布尔表达式);
; z Q0 Q4 f% i, @ Example:
, Z: W1 S+ D+ S$ y, R/ n, i4 L. u6 G do{( N0 M; Y9 o8 J( E2 p0 ]
System.out.print("输入押注数量:");
$ I: T6 m3 D& |# Z, @ bet = console.nextInt();
~3 T* P; E- ` B }while(bet <= 0 || bet > balance); //否定条件* _4 Z3 V% Y% b3 p6 C: t1 N
* s, a5 }0 j* O4. java Array
8 |( j, p' I' r% y/ m9 h 1) 数组变量的声明$ Y% a2 p; F, e3 V) ?) [. [
int[] ary; 声明了数组变量 ary, 数组变量是代词,
! N7 [' S5 P7 I/ p int ary[]; 为了与C语法兼容的写法, 不建议写法,
+ w) R) B" H& ?- V
) \+ }' s: C& u9 ~. y, ~: \: S 2) 数组对象动态初始化 b9 ?& \0 k) T9 O& x7 m+ u& Z7 O
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词! T; @9 `1 c' a
指代了具体事务.& V1 ^3 |# s, m! T8 [. z
数组元素是自动初始化的, 自动初始化为"零"值.( `. a1 Y3 T2 g0 ?
"零"值: 0, 0.0, \u0000, false, null
+ R' w: p/ `) j) j( x( y ary = new int[]{1,2,3}; 直接给出元素的初始化2 U/ G/ U. o( ]; w) @, L
3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化
) U6 E; o0 V1 @; S- M& A * 不能用于赋值语句
2 k) P4 I6 c$ x c g$ m3 a; ] int[] ary = {1,2,3};
/ X% N! J, j5 i- W! g5 \ ary = {3,4,5,6};//编译错误" k% a! F: n$ ^* S
8 |. J+ e2 N9 [ Java关键字: if, public, class, else, while" @0 P i: t, ]8 d+ G; Q$ K- w$ g z
特殊关键字: goto, const, m* c3 d3 j2 o
java中 true, false, null 不是关键字, 是字面量!
' i" h& @' o+ E6 z$ i. S- O; I2 x
4) 数组变量, 数组对象, 数组元素 7 `7 w' }- u# w M, O2 g) \% R Q% [
如: int[] ary = {1,2,3};& L W" a7 N" O9 R/ f* i
ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组0 }$ @( y) F- p0 w* V8 ^
{1,2,3} 数组对象
! j; Z& z1 P0 v2 U) P" J/ E 1,2,3 是数组元素
" T. K+ A% @) \2 ~4 H
9 e- o, ]2 \7 N* f# y/ G& H1 ~ 5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1 % F+ b0 a2 j& f, K; ]
A 使用[下标] 访问数组元素
- ~7 @& J$ ~' R! q B 越界访问(小于0/大于等于n), 都会发生运行异常: K7 _) i2 W* X9 J8 ~9 C) D: Y) O
C 使用.length 属性可以获取数组对象长度
" \& d! k! H! R0 t, s2 G9 a
9 X$ Z) O* O/ o/ v+ I3 W; ]5 数组的复制与动态扩展算法 J5 C- e, j/ d/ G/ [4 T; z
1) 数组对象的复制" Y% H0 K8 ^) m1 M
( b; W0 L9 W/ W 2) 数组的扩展问题+ C, J- {1 v8 ]4 r( |2 t, ]
1 Java数组对象的大小是固定的, 数组对象是不能扩展的8 f, N8 v9 U* S" _9 D8 I5 K
2 利用数组复制到方法可以变通的实现数组扩展
3 q! P9 J* B" N H0 N 3 System.arraycopy() 可以复制数组
. R9 C9 I7 c5 V, B' ~ 4 Arrays.copyOf() 可以简便的创建数组副本- @- O9 B- n1 C2 K. M# m/ J1 s6 h
5 创建数组副本的同时将数组长度增加就变通的实现了% {; ]( Q! r2 I/ v2 R \$ E* l3 r
数组的扩展" [: z3 Y7 o: o5 T
' W) M8 z% M- V9 e6 f
案例1 : 统计一个字符在字符串中的所有位置.3 Q5 _8 r& f; {. \2 I5 Q
字符串: 统计一个字符在字符串中的所有位置% ~. h. ?/ A) F0 t
字符: '字'& n" ?: H0 x6 i# R
返回: {4,7}
$ w3 ]! C: }( j2 f7 n* `1 D1 f& q: W* `& I
6) 数组的迭代: 将每个数组元素重复的处理一遍.
; o G9 \+ ]$ Y- v8 J5 s7 r9 x$ w for(int i=0; i<ary1.length; i++){! _* d F4 x( n x% D
System.out.print(ary1[i] + " ");
, R7 U6 i9 |4 Q' Q# R9 r/ x }
3 [: z$ Y- c- p4 w( `" V( J
. c) U) B2 i6 }+ S$ f5 z( n 作业:
$ t) s! v, e6 e/ u% `4 F 1 复习并且完成 全部 课堂演示代码, 添加适当的
0 m$ E; ~. {! M, b7 _( R( z 输出语句, 研究输出结果, 添加适当的注释.
# n4 `8 b2 @; Q* g# R# d 2 实现案例:
9 c! Y# s) S2 Y$ R0 v' G 案例1 : 统计一个字符在字符串中的所有位置.& v5 i2 n2 Y4 G; e7 g9 w0 B0 t
字符串: 统计一个字符在字符串中的所有位置
5 `( h4 N6 N) D. j 字符: '字'4 Q: V$ b5 k6 }/ F
返回: {4,7}; p }) @- a3 O1 o- J+ \5 b
public static int[] count(String str, char key){}
& F. O; s, Y' b; M& t8 ] ! U2 h1 J- H- L% n1 W0 R2 Y- M3 I
char key = '字';$ T1 V' z, w) S# \1 j
String str = "统计一个字符在字符串中的所有位置";7 ^5 z. \$ B9 ~% _! g
int[] count = {};
, f' U$ i4 ]1 @2 A1 V% Q for(int i=0; i<str.length();i++){' Z8 ~$ t3 s O* \* u) ~
char c = str.chatAt(i);
* ?- o; o" y& N' R if(c==key){
6 M6 ~$ g7 H% k% G' W //扩展数组,
P5 K, e* _/ O& b count = Arrays.copyOf(count, count.length+1);1 P% C& D4 U" L( g- I) x+ y1 J
//添加序号 i
) S+ A2 m% ^/ ^! [5 V) ?4 D count[count.length-1]=i;# Y/ l6 t. x6 b) M& N; ~
}
. _' G; c9 g/ V5 S+ ^ }
$ t: z! } J9 U H( [
# I/ N6 M& |. ^8 m& \1 t0 R) N
7 _+ A3 B. [4 d' q2 H+ w! E 案例2 : 统计一个字符在字符数组中的所有位置.
' j2 J4 F0 F3 y& J 字符数组: 统计一个字符在字符串中的所有位置* n" F' ?: {3 f3 `8 P; H0 z3 \1 }
字符: '字'
4 q; ~$ b, N5 P6 j 返回: {4,7}
s, m( N+ Y/ \0 m
: W5 k1 d" w/ ]# a' X v4 |3 O2 U 案例3: 字符串统计案例:
2 F1 |( c7 U4 V# } 字符串: "123456789012"
. t9 P' m& S: k% w 将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1: F5 ?/ G5 I$ I5 R* a$ t; H: L
将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2
% W9 Q7 b6 |' n
% a* U1 V7 P* X& k$ M+ i. ~3 u 案例4: (选做) 将一个整数数位翻转$ l( s# J' r8 t' ~3 v- R6 m; O' Z5 h
如: 整数 56123 int i =56123%10=3- o. J" I8 q/ [' \ ]" v
int s=56123/10=56124 q; E# j) l: T0 d9 T' \
1 b" t6 _7 o. m' _7 r# V( H3 S
! L& W7 A& z: a! `3 x& R
返回结果为整数: 32165
y- ?. {8 ?. o4 U8 j9 X' C: O A1 [ 提示: 使用 %10 获取最后一位
# {% J, G4 G: @9 M/ v 使用 /10 去除处理完的最后一位
5 ?- o2 Z% C! Z. z
- t. A( ^) @! r R5 y9 U- B |
|