该用户从未签到
|
1. while
% P& S. k& B7 l4 x! ^ While 循环控制' Q2 G' L- Y3 B
% ~3 v R. f6 |: b- s$ X3 r9 E
Scanner console = new Scanner(System.in);
3 d+ p# b0 y/ \ while(布尔表达式){
) o) G$ {9 ^3 X9 f qty = console.nextInt();
9 \4 x1 y7 Q. r- E, R if(qty>0 && qty<=5){ //五个以内
# d9 y3 K, X9 t+ ?6 p! c break; //打断, 打断当前循环
3 _& x% {" y4 Q i# E }- [1 }7 Z$ L0 T& E
}
/ n" m, T! ^8 i/ C
8 K! Z5 Z) I8 i' q( k! A% H2. for 循环(主要用于几次的循环)0 U7 V, @5 ]4 G$ W
循环控制3 n8 }3 [3 U. l3 o8 J z3 j0 w0 x. n
for(初始化表达式;布尔表达式; 递增表达式){
2 h5 C( x$ J/ H) _: G# F //循环体
; ?! _7 u8 f7 ^% K$ J }; c0 T" w1 A* E' c- m. p0 c; N( H% }7 i
for(;;){
# {6 I( S3 [" q( _7 |$ B# F$ \ }/ I8 G+ b. n$ \% @9 P
for(int a=1, b=3;;){
6 x5 n" B% W W) P1 e }! z! q {; Q- L9 @4 Q
% U# C3 j- }; Q; I
& k9 K; i3 i# X0 ?% @ Example:# R6 p. w+ k; q& w/ G/ T
for (int i = 0; i < array.length; i++){
7 E9 ^ B9 p0 U4 w r System.out.println(i);% A) a: X, Z( P" X) J
}
# f( R; B4 Z( S" {8 D7 z% W' ?
5 s6 i1 E0 _ d9 {4 G3 U+ L3. do ... while, X- `% A0 L8 u, \5 o) b$ L
do ... while() 循环控制
; T7 a' n, G9 h! ] do{4 P7 M$ D- P1 B
//循环体
( h9 `. }: R/ Q- P1 k! a }while(布尔表达式);- S2 Y* U' P/ L$ V/ J |3 G
Example:
+ w3 ]% @: P" A/ K$ _ do{; n9 `$ b: w3 q( g& D3 j
System.out.print("输入押注数量:");
1 O+ s# x7 _# ?( Q" x bet = console.nextInt();
1 _8 f4 J& b# H3 N- B+ C }while(bet <= 0 || bet > balance); //否定条件
8 g: M' L( F" T# l6 ?# M7 n; n; i/ X( y
4. java Array
; q5 _- Y7 Z" P" n 1) 数组变量的声明/ U) ?/ [2 R8 \( H. D+ J& W# y3 q
int[] ary; 声明了数组变量 ary, 数组变量是代词,
; R! @9 m; i' f7 E int ary[]; 为了与C语法兼容的写法, 不建议写法,6 T1 f; [+ r$ r3 ~8 {4 P/ K
& Q G" ^0 `# y6 A 2) 数组对象动态初始化6 Q. e- r+ ?/ z# S: m5 H: E* @
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词; m! b3 m. _' W! U1 \
指代了具体事务.
3 D* o" E* @( b ~- J 数组元素是自动初始化的, 自动初始化为"零"值.
# h, l' W" o _, Z" S8 c: w "零"值: 0, 0.0, \u0000, false, null0 X7 |8 J0 x( Y, @0 D( ?
ary = new int[]{1,2,3}; 直接给出元素的初始化
. ~, z, m- C6 ^9 j2 V/ P# \& ~ 3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化
0 w: E1 n, D% Z" h% Q7 O5 {, \& y * 不能用于赋值语句/ U- `8 C) N! v/ @& _
int[] ary = {1,2,3};+ H% F( S+ N- U+ j
ary = {3,4,5,6};//编译错误
: R- `( x x/ {, e/ E. }1 n8 R) ?- D4 X% Q/ x
Java关键字: if, public, class, else, while
+ l) o4 a8 ?9 t# C 特殊关键字: goto, const
* l6 C$ m% `1 o# Q$ g0 z F java中 true, false, null 不是关键字, 是字面量!8 X* G& F8 P) S' w- q
; K4 b E/ @4 M6 Z: Z# I1 C
4) 数组变量, 数组对象, 数组元素
: h0 Q- p, g4 ]: l6 ~ 如: int[] ary = {1,2,3};
% L5 }( } O" i9 r( z+ i ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组
; S6 h9 R0 H7 Z& J0 Y; F' I9 ? [6 { {1,2,3} 数组对象; g. F* ^0 O0 p4 I$ m' p
1,2,3 是数组元素
" l- X9 s# s n: J, e4 j# \9 f) M5 R& X6 Q$ z5 ?
5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1 $ V3 H! R i* ]; b" Q0 g
A 使用[下标] 访问数组元素7 Q" y# _' W A8 t# P/ O
B 越界访问(小于0/大于等于n), 都会发生运行异常
5 E0 z" b- \( |1 _* d7 \( t C 使用.length 属性可以获取数组对象长度+ d7 O( S! S8 z& ]
0 S; y- ]0 I: L' n% n5 数组的复制与动态扩展算法# [- S3 E+ J! }3 x
1) 数组对象的复制
5 W* _' j9 a2 v4 D. w3 T: M/ ~! ?
' w" ~7 d" C( Q0 g0 m) h# j 2) 数组的扩展问题
K+ {/ V% h! a7 b$ T# e- F 1 Java数组对象的大小是固定的, 数组对象是不能扩展的0 W2 X$ G0 Y2 K' ]
2 利用数组复制到方法可以变通的实现数组扩展
, b: R8 v) o" c9 l 3 System.arraycopy() 可以复制数组1 A6 k% p9 I, q* u. O! x2 |1 p# y: Z
4 Arrays.copyOf() 可以简便的创建数组副本- D% \* }' ?+ d& |1 ?5 ?6 Q
5 创建数组副本的同时将数组长度增加就变通的实现了; a6 M4 P+ z" N. X$ v7 F
数组的扩展
0 ~1 Z$ j) T ]/ J3 V( r. t
7 ^9 v, \6 n, u/ G2 S6 f 案例1 : 统计一个字符在字符串中的所有位置.3 }3 v, D' ~( q5 k
字符串: 统计一个字符在字符串中的所有位置3 Q% m- a& A9 i/ ?
字符: '字'
" R: y" E. m/ l5 n& h 返回: {4,7}5 P5 R% R" \" @; j2 k) x! s( z5 h
5 K7 T2 K, I# o! p' ]: F. k1 \6) 数组的迭代: 将每个数组元素重复的处理一遍.# x* z6 o2 F& ]0 l
for(int i=0; i<ary1.length; i++){9 U/ c# ?4 ? R" c0 v2 k! r
System.out.print(ary1[i] + " ");; E5 U# }" {9 k* D/ v
}
+ B$ b$ ~8 m& T( m) _! T8 P$ N; ~# a0 c) _& t- W
作业:
# h! ~8 C, U: y6 Z/ Z1 F 1 复习并且完成 全部 课堂演示代码, 添加适当的
, H3 P) e$ @1 \/ B, a 输出语句, 研究输出结果, 添加适当的注释.
5 l9 {, A. G4 @! T 2 实现案例:) a6 l: v$ q/ q5 v3 n& L( [
案例1 : 统计一个字符在字符串中的所有位置., H* i I( L5 x" l. K" F; r8 i/ n
字符串: 统计一个字符在字符串中的所有位置 l2 F& G4 `! L6 S( ^7 V i
字符: '字'
1 M# ~0 T( P! ]+ L) L O 返回: {4,7}; l! d" x! |3 A' j; Z, A+ K O: ]
public static int[] count(String str, char key){}6 I. b6 c5 e H' O/ Y
9 s# B8 c/ P7 Q p/ {: x char key = '字';
% U0 f6 c8 |$ I8 J/ i, z String str = "统计一个字符在字符串中的所有位置";
+ j- q% Y' F7 N% A* S: a( R9 I% H int[] count = {};
4 D- K, C- n3 j! v% Q for(int i=0; i<str.length();i++){7 E. u4 r! r, V2 R
char c = str.chatAt(i);6 z$ U( H$ z4 x3 i! ~7 _/ S
if(c==key){
h/ `: Q9 O2 a. l! v. R' m //扩展数组,
; q& o7 |7 x( u( s# u count = Arrays.copyOf(count, count.length+1);
8 a, q- B% v/ M, M //添加序号 i& x- ^& b0 H @' \% {0 m P
count[count.length-1]=i;
1 \6 o. N) n( l# \ }
7 I& F7 k- j J) A8 g- a/ M }0 W( o% ?- ?1 D) {3 T3 a" p6 \
. A3 J) ]5 n o% Y2 n9 X. b3 h# R* g+ @3 P6 ^
案例2 : 统计一个字符在字符数组中的所有位置.
( K, c" H3 F* ?5 O% x 字符数组: 统计一个字符在字符串中的所有位置
# ^) A" ]. M9 O Z 字符: '字': w# ~0 F+ v5 }& c
返回: {4,7}% _6 O# N) t* S2 m
# t8 b4 I, \( Y' o$ ^6 f" e% W 案例3: 字符串统计案例:
- T* O/ f6 P, w7 S) G 字符串: "123456789012"
z4 s6 q9 k' D 将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 12 W: s( E# y! V5 N: |
将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2* y: r W4 j, B/ |9 I
/ Z% M* i1 L$ a4 } D3 C 案例4: (选做) 将一个整数数位翻转
! m9 B& F8 a1 \7 z% z, M* q 如: 整数 56123 int i =56123%10=3
) d4 m3 h/ K8 w+ _ int s=56123/10=5612- Q/ Z8 d7 M# e- R3 ?( ]8 k
$ x# M! n9 o5 R# [2 |- B
/ p/ H4 y3 b3 `* r6 y9 x 返回结果为整数: 32165
0 w$ p* U9 w" U9 C 提示: 使用 %10 获取最后一位$ M0 [- b$ X# t$ E1 a, s U/ v
使用 /10 去除处理完的最后一位4 [' M" c+ P, j" Y& q
9 ~* k% Y/ ^/ B n0 W% t* w
|
|