该用户从未签到
|
1. while0 h6 H: s% ?2 P0 x
While 循环控制
: y4 i4 d( b1 |( h+ o6 R, h
8 Y: X5 m2 u# r' G. w* d! V3 Y Scanner console = new Scanner(System.in); s7 G7 L" K* V" h& R
while(布尔表达式){. f: _8 C ~7 }; _
qty = console.nextInt();
: ? o7 ~2 j+ T9 x I' E' ^ if(qty>0 && qty<=5){ //五个以内6 f- O9 e5 M$ P# \& @8 v# U
break; //打断, 打断当前循环+ H8 W& y# y$ _$ @5 Q
}, z7 ?. U& B w: q6 n& T4 w7 y
}
7 v, J! L$ t8 r. X6 T
; ^6 \/ J5 F* f2. for 循环(主要用于几次的循环)
! Z$ C5 b0 H4 A" M0 `6 m 循环控制
# l4 s- k# u1 A$ |" k9 _ for(初始化表达式;布尔表达式; 递增表达式){
: S2 W1 I2 i# v+ L6 k //循环体
2 e ]( N8 F. L3 m9 W5 k3 o- E }8 I" w, j' @4 X; g. ~ g! s* o
for(;;){
' I Z2 \- _$ ]! g; K* B }% P2 l T# I6 P1 T$ S% t
for(int a=1, b=3;;){1 e) t* j2 {4 k
}
- e/ U& O! A9 s9 N& m% I/ s0 J6 J/ t
, t: J4 f/ a' M' t
Example:
3 Z ~! M- g3 D3 K+ V, O for (int i = 0; i < array.length; i++){
$ u: X" b5 H A: L System.out.println(i);
8 @* w8 t4 m! O& r* b: ?( N5 @4 b( x3 X }( ~ k8 o% ~, U! U6 J
7 ]( ^/ K" o/ B6 ?2 G& ?% T$ X# D
3. do ... while# R0 e; r1 l6 X7 Y
do ... while() 循环控制9 v2 B& x* r3 B0 k) i. Z% Y
do{
/ ] ]& s# s/ a% U# ?6 v2 P //循环体5 a) k n2 G8 Y
}while(布尔表达式);
0 d& ?. r! O$ g6 ]. L Example:! n+ q0 j+ k' K' X( y# A
do{
9 B, X2 F& u: L* o5 x* _% l3 N System.out.print("输入押注数量:");- k# ~- t1 Q' }8 e
bet = console.nextInt();
5 E9 o2 F# O+ v' Z6 `3 V; e' T+ ? }while(bet <= 0 || bet > balance); //否定条件
# B; Z' L. L9 \5 e0 {7 M( X: G. F8 ]* U+ d" \1 d. n
4. java Array
- S& c0 m* ^# l& e- r6 ~6 x 1) 数组变量的声明$ _) S9 p0 [) ]. U
int[] ary; 声明了数组变量 ary, 数组变量是代词, W. a/ h, Q1 Y* N$ ^6 b! \, ^
int ary[]; 为了与C语法兼容的写法, 不建议写法,! G- l& ^( @/ [& H6 I6 D# N
2 ]3 s/ ?: G' K% r! r& d, b$ r
2) 数组对象动态初始化* n; _ T9 ]2 n) U0 ?
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词0 A6 A, [. s2 B/ W+ p' J
指代了具体事务.% V( T1 f, Z9 \* A# S7 I$ ?/ R' y4 g
数组元素是自动初始化的, 自动初始化为"零"值.
# ?1 F8 g& [8 I- E; q. E7 B7 Z "零"值: 0, 0.0, \u0000, false, null
; l* d7 W" V/ g ary = new int[]{1,2,3}; 直接给出元素的初始化
( ~% F/ R: T2 o$ H J 3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化8 T4 l- g+ N" f; x# {6 ?
* 不能用于赋值语句
" R" a& x$ w) j3 V int[] ary = {1,2,3};
' W) e; v7 f( m' @; b ary = {3,4,5,6};//编译错误+ [. |6 A: ^, T3 I9 n, l
% b* \; ~& e; @1 g
Java关键字: if, public, class, else, while: k/ L* t! w9 D2 F$ _
特殊关键字: goto, const
# ^8 O& v: M6 a% G java中 true, false, null 不是关键字, 是字面量!
6 f% I, A9 e0 I3 W) O @7 H Q* c# ~# m8 [1 l0 h
4) 数组变量, 数组对象, 数组元素
! b4 {7 g; R3 }. G# v 如: int[] ary = {1,2,3};) k5 [4 p6 n& ]! H* M& L. h
ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组7 I: d7 p8 x8 |' K
{1,2,3} 数组对象0 @7 `, P! e X8 a' I
1,2,3 是数组元素
( S2 c# K; n" O) P9 I1 i+ F* _# f6 b+ m, a; D
5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1
5 H8 {* g; F0 [% ^9 V( ~& n" w A 使用[下标] 访问数组元素' a/ R3 c: `7 P
B 越界访问(小于0/大于等于n), 都会发生运行异常
; w" N L3 Q7 U0 N1 d9 a9 | C 使用.length 属性可以获取数组对象长度
( z' U$ S* i# u+ t* t) d: V0 ^, D9 [8 _6 J; X8 w/ c- Y( k0 p
5 数组的复制与动态扩展算法
$ L; n' {& ~! W/ f, S 1) 数组对象的复制+ L! A' X/ t* Y7 @0 M$ c
. Y' f' c, f- C) Y+ [, D 2) 数组的扩展问题
( E. F( k0 v; ^* \ 1 Java数组对象的大小是固定的, 数组对象是不能扩展的
' M+ P0 s9 J8 U' H8 M# Y' l! V 2 利用数组复制到方法可以变通的实现数组扩展5 G# n/ f$ h7 _# t% H
3 System.arraycopy() 可以复制数组
4 O- M. _* X, ?0 X" R% }; G 4 Arrays.copyOf() 可以简便的创建数组副本
$ |% N* K8 }5 P' G* k @2 j/ m 5 创建数组副本的同时将数组长度增加就变通的实现了
6 f9 m4 |' m* v( _ 数组的扩展4 N+ ] N5 ~& C3 |9 w- M: i% ^4 v' {
+ m- T) H) l' l6 t, O$ V 案例1 : 统计一个字符在字符串中的所有位置. } e6 j! r, B4 a. E4 f/ y; K
字符串: 统计一个字符在字符串中的所有位置& E& d' ]7 z5 }2 o, \$ ?
字符: '字'. }0 h& e3 r9 O+ L2 T7 z" w
返回: {4,7}
- ^3 z1 i: n$ J! ]6 U/ A) S! L: R% ` @4 t7 `! \
6) 数组的迭代: 将每个数组元素重复的处理一遍.
; U) p4 ~/ j# ^! [" u; v for(int i=0; i<ary1.length; i++){
/ v% `) W$ R# [) n9 Q& r System.out.print(ary1[i] + " ");: |& N9 N! l$ b/ U1 |$ o
}
0 x) z' E# s6 n. ]8 F1 @$ B4 o& i7 G" g& m3 {% L' B: o
作业:
1 A, p$ x4 ~! v 1 复习并且完成 全部 课堂演示代码, 添加适当的2 a/ V+ W ^0 B; u. O: z
输出语句, 研究输出结果, 添加适当的注释.
) l t/ a. ~6 t 2 实现案例:
2 f) `% I% o) L; \- y) W 案例1 : 统计一个字符在字符串中的所有位置.1 z+ E6 b# X# ~* B
字符串: 统计一个字符在字符串中的所有位置
; j+ m/ _, S0 S5 m% `, r. p p 字符: '字'
: B& g6 T, W9 a$ t7 ^6 o E 返回: {4,7}
8 A+ |3 ]. Z3 P1 z& c/ h public static int[] count(String str, char key){}5 G D0 f% @3 M {$ A/ ^
! F" T6 K3 ~1 K
char key = '字';
. p) G: ]6 d `7 { String str = "统计一个字符在字符串中的所有位置";
I' n% I9 I( m3 |7 @* ~ int[] count = {};
, n% ~$ n% P; g! h; ~ for(int i=0; i<str.length();i++){
8 O9 ^& W3 q0 s3 J5 @) N char c = str.chatAt(i);
# C+ P% e6 X S6 x8 t9 } if(c==key){3 E" t9 L- C5 D) e' v( d3 g! |
//扩展数组, 4 U" D- Z; n/ a+ p: r8 }
count = Arrays.copyOf(count, count.length+1);
2 l* Z" ^# L9 J" n5 y //添加序号 i
# X) @+ e; O+ R: ]! J6 ~ count[count.length-1]=i;, Y0 P* P- e, s2 {' `
}
, L6 ~- D* n* r0 ^( M }
$ ~# p1 d% f# P8 |* D+ p ! h, L$ k. P" w d
: Q; a) \8 A9 O) J8 @9 I9 q
案例2 : 统计一个字符在字符数组中的所有位置.
% ~0 y* r" W0 _8 r 字符数组: 统计一个字符在字符串中的所有位置3 s, b7 `& b9 A6 x
字符: '字'0 x7 \0 C2 x* \0 d% a+ Z* Y: R
返回: {4,7}6 r8 J# U6 `! w% K, c! j/ n/ M; O
# F- U/ w& w* q
案例3: 字符串统计案例:, Q0 f; M+ R2 |; w/ v; x( Q+ {( C: q( L
字符串: "123456789012"
! L' ?. x: K) n, { 将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1/ o1 E; U! Q7 K6 l' _. D3 O6 Z& K1 [
将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2
@% u$ t, r5 P
P) e( `8 C) `: l2 h& g$ f. `8 D. g 案例4: (选做) 将一个整数数位翻转
* o/ n% F$ @: K# u! d% a 如: 整数 56123 int i =56123%10=3
$ C% p% A; X, t9 a/ ? int s=56123/10=5612+ {1 P+ T1 @% B* y
5 [6 f0 Z0 V8 ~' `( x5 p- d
* P' O J6 U# B" Y$ @
返回结果为整数: 321650 W/ p. i+ a! b* q
提示: 使用 %10 获取最后一位
& o3 Q5 M7 I' A! U 使用 /10 去除处理完的最后一位
7 ]5 x( P6 x5 W/ G4 q! E$ \
! q/ Y- {3 Q/ d |
|