该用户从未签到
|
1. while% M9 s2 E8 S3 f
While 循环控制/ S0 C0 P- d1 Y4 E' s
# Z" x+ n" i' g8 u8 N* ]9 m: S& i
Scanner console = new Scanner(System.in);
( B8 I, q: S/ A3 ^: R while(布尔表达式){
# f7 V1 O3 ^3 [6 c) g0 U2 O) P qty = console.nextInt();( n" C) ^8 p2 I
if(qty>0 && qty<=5){ //五个以内- k$ R4 x1 g- \# _; |
break; //打断, 打断当前循环0 ^4 f: O& d# ~# o' n& D
}
5 U2 u# X+ q* ^' D }4 ]& V, v0 K" Z: s0 i) f& c
% B% e( @6 @/ z' T9 y2. for 循环(主要用于几次的循环)
, B( |% _. f+ O. m# s5 j$ D 循环控制6 G: I9 y# @8 c' w: X! D
for(初始化表达式;布尔表达式; 递增表达式){( d. v& V1 k8 D8 C* ^
//循环体
9 C% K7 y% m. c+ V; w8 \4 f }
. \0 h8 V8 @6 h5 e3 ~3 a for(;;){
3 A* H! |- _3 t, q% M2 o6 L3 T }1 ~& L8 d6 ?$ h0 L/ V$ U
for(int a=1, b=3;;){
7 @$ v. `% ^: I6 ~- G( q- L* J } m$ o3 h: D0 N" c" p' e
+ e( o6 l# @6 y+ o# y
! P# |3 p. A0 P3 V/ ] Example:
1 Y: Z7 T; v2 k9 L3 A# o1 E for (int i = 0; i < array.length; i++){/ h z3 D% r( T3 F, ]) W
System.out.println(i);2 C3 W8 i* v- _4 R3 ^
}
! G) S5 k3 S6 _! s3 I
* i. y9 \. q( b" n2 a3 [* @* `3. do ... while! O( V) P9 d: y( v; J- E
do ... while() 循环控制
$ k u# | s% K$ Q% v do{2 ]/ x/ r/ A5 {" i3 x+ f
//循环体/ v4 Y; A/ y# ?0 s2 X1 z8 z5 a: A+ U3 N
}while(布尔表达式);
; r, X, Z# J1 G; j2 @ Example:
, K F) n3 [$ @; J do{; C- D: r( R1 I' [# M/ c8 ]
System.out.print("输入押注数量:");7 C: ]. p, f8 p# F
bet = console.nextInt();6 Z x6 K- B9 ?/ ^9 K( [
}while(bet <= 0 || bet > balance); //否定条件# K4 f( M6 K4 ], |7 H0 K! a
1 h& K5 o1 `. Q
4. java Array9 e r) z5 {& ~. t, R
1) 数组变量的声明
+ k- C" [) L$ B* l7 M5 n int[] ary; 声明了数组变量 ary, 数组变量是代词,) E( V6 f4 D9 Q5 t8 V. k
int ary[]; 为了与C语法兼容的写法, 不建议写法,; K4 i% F% r( R; C7 j3 h0 s
' w( v2 P% V) c. l$ i
2) 数组对象动态初始化
0 U# G) W$ f& a. B t" f! J7 W ary = new int[4]; //数组变量引用了具体数组对象, 就是代词
6 W3 B9 R, O% x8 @7 _ 指代了具体事务.
8 o4 ^% Z; P& M 数组元素是自动初始化的, 自动初始化为"零"值.
7 l x n6 N/ P/ j9 x. J) A, n* p/ R "零"值: 0, 0.0, \u0000, false, null
3 U" Q9 a" g' Z! m ary = new int[]{1,2,3}; 直接给出元素的初始化
+ S! J2 p( O3 N# {/ P 3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化5 i; A; c) F+ h. M
* 不能用于赋值语句& J! X* s. j' @+ ?0 _ p; B
int[] ary = {1,2,3};& q: N6 f4 f( O& r7 U- U
ary = {3,4,5,6};//编译错误
! M u4 ?3 E, o: [# R+ A- [; _4 y5 x6 J: D$ \
Java关键字: if, public, class, else, while
7 s5 M" n. l* F& C4 B 特殊关键字: goto, const
+ _7 L2 }. f3 I* y F M1 i% L java中 true, false, null 不是关键字, 是字面量!
4 S4 V( S$ \1 I0 V7 T5 b1 ]* o5 P$ t
4) 数组变量, 数组对象, 数组元素 / {# w$ R% n, P( E/ A. c
如: int[] ary = {1,2,3}; u" V. t" u* z5 t: x
ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组
' a i7 p$ N1 b* p/ R {1,2,3} 数组对象" N; q/ X6 V5 i1 ?, ^! s
1,2,3 是数组元素$ A4 L ^3 ?) r' F7 a
7 R* g+ J9 N& Z( g$ I# Q- C
5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1
2 z1 n. F3 P. q A 使用[下标] 访问数组元素! i& P2 J) O" Z" c+ h- _1 l
B 越界访问(小于0/大于等于n), 都会发生运行异常
5 Z% g8 [. X# N$ l5 o C 使用.length 属性可以获取数组对象长度
; P2 {" I* D- U% j7 _: i& E
- t) P* A# ?! j5 Y5 数组的复制与动态扩展算法3 e' `5 @' b3 d4 Z, m1 @
1) 数组对象的复制
$ C0 w! T0 j- v: a2 R: L" f( q! m; J2 C4 k% Q2 }( |1 s: H
2) 数组的扩展问题
" F2 b: q% ~ F. d 1 Java数组对象的大小是固定的, 数组对象是不能扩展的0 d6 u' Z% S% ~( o+ @- P
2 利用数组复制到方法可以变通的实现数组扩展
4 @! p4 b# F. G 3 System.arraycopy() 可以复制数组3 j5 C/ n& a* q. k4 S& P0 W
4 Arrays.copyOf() 可以简便的创建数组副本2 i Q3 x- u. |# I0 ~ k! K
5 创建数组副本的同时将数组长度增加就变通的实现了
+ w, K+ n4 W5 {0 \: V* K 数组的扩展9 s# E8 a' E) g% O( A
f. P' C7 v. u5 {/ \7 ] 案例1 : 统计一个字符在字符串中的所有位置.
! [, u0 F' l: [! r 字符串: 统计一个字符在字符串中的所有位置
0 Y% g- f% D, S& \ 字符: '字'
& u# N8 ?" s) x0 u& h 返回: {4,7}
" D+ m0 e+ f- a. y( G% x& |
9 q! m, b/ i a. }8 `6) 数组的迭代: 将每个数组元素重复的处理一遍.8 W8 m- {9 U+ `$ l- ]% z
for(int i=0; i<ary1.length; i++){
9 g% C% H; V- z4 f System.out.print(ary1[i] + " ");* n- p/ ]9 o: v' k9 ^4 H+ q
}
2 ?4 c* |, J% \( }9 o: C3 I' d2 [2 ^& C7 Z3 e
作业:
! Z3 u# E$ n' Q9 k; f: E! Y2 n9 L 1 复习并且完成 全部 课堂演示代码, 添加适当的
5 b5 t$ z% l6 D) I, M3 z 输出语句, 研究输出结果, 添加适当的注释.# ^" W8 g) `8 I" }9 k- w
2 实现案例:
: y3 Y5 d$ c: K! b, T' p 案例1 : 统计一个字符在字符串中的所有位置.; {( k( u& Z& ?& E) o" O- v z: e j
字符串: 统计一个字符在字符串中的所有位置& W$ W5 j- | \1 }8 u- G" m; `
字符: '字'
9 g* ` k) z, t' s' R 返回: {4,7}
" o. O5 {, P3 z/ h* j; f; f public static int[] count(String str, char key){}
k* z) H( G, p& f% D+ x- y ( S' [6 H7 p: {
char key = '字';
! v. X* n5 _8 R2 C9 r/ M String str = "统计一个字符在字符串中的所有位置";
) y8 R; M0 {2 C' K3 N int[] count = {};
& V4 x1 m0 x( x3 f8 \' @6 A0 W for(int i=0; i<str.length();i++){! z* e: F/ z# Q5 U( ~
char c = str.chatAt(i);) n5 F' O! i: v; o
if(c==key){
' o. c$ `0 b" V //扩展数组, : E' _; {6 u4 v V) [
count = Arrays.copyOf(count, count.length+1);) t9 x6 q- i8 C+ u, D$ E
//添加序号 i
4 g3 _- q2 ?% {4 ?2 T. F# @ count[count.length-1]=i;7 G8 m/ }/ z! Y T6 _+ Y/ ^
}) w# \2 Z0 d" I& ~
}
1 B# z+ J2 X3 u' M4 j6 V# M 8 E" B. C- ?* k9 a7 s0 W
: B( M; r0 x0 Z$ h
案例2 : 统计一个字符在字符数组中的所有位置.% i8 Y* [2 s$ Y% C
字符数组: 统计一个字符在字符串中的所有位置
- p( p4 z8 u2 x- y' A' x 字符: '字'0 V8 L- r! C/ {, \0 y$ C9 c. a
返回: {4,7}
) [/ O9 {) K* e$ [! n. ]5 r3 a! t0 A O+ S5 `1 j
案例3: 字符串统计案例:
9 {1 R( T* k9 N1 b 字符串: "123456789012"6 T& E5 |% _( R0 i. c" X
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1
; E, z3 P; c4 G/ q9 x/ r& R 将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 22 a! _7 M; d' J. L2 E0 p _( z
, j% f7 ?9 x8 i* ?+ `
案例4: (选做) 将一个整数数位翻转
" u) {! s2 t3 _ 如: 整数 56123 int i =56123%10=3, U9 f+ u3 h5 e, H; O- u/ J
int s=56123/10=5612
* q4 ?$ s1 G9 k2 U. A2 R6 M2 `
g* y+ I i( D! Y3 ~0 k6 ^* M& j! T6 @: ~. e5 U
返回结果为整数: 32165
. h! v. X$ t6 J2 w: L- v% x 提示: 使用 %10 获取最后一位
5 U2 B5 ?+ B t K) z 使用 /10 去除处理完的最后一位, j0 Z( W5 @( O7 _8 X6 Z
4 {) V6 G) k" m2 h |
|