|
该用户从未签到
|
1. while
, T2 R# E8 n; w3 H While 循环控制
1 d- b& B: h, F9 T7 a0 d3 \2 W& S- K. l0 S
Scanner console = new Scanner(System.in);3 M7 N8 n* m* {" {
while(布尔表达式){ \# O, e$ I% Y
qty = console.nextInt();$ x2 r; V6 n! `
if(qty>0 && qty<=5){ //五个以内
, Y2 m" u9 Q5 O& z$ z- H! a break; //打断, 打断当前循环
* ~& \2 e/ O1 D8 M0 K+ [ }1 Z( A. I9 F& ]7 g
}
" [6 n0 }$ E0 j* V; d& k1 n7 c
7 T( \" O5 Q; r9 c2. for 循环(主要用于几次的循环)! [. j0 C9 [- V* D+ t3 i: V
循环控制2 m& @" p7 `2 T# G1 B3 Q. T6 ?
for(初始化表达式;布尔表达式; 递增表达式){
- C: W; y7 c$ ^2 c4 A$ W //循环体* H& y5 W7 j( S% x" x
}
: v6 e8 ^/ q: P0 h for(;;){
: j% `5 ]& d( d2 g' ~' T }
. U9 P; H( `3 Z) L0 z" H for(int a=1, b=3;;){+ L9 l, X: t: G& _% ]. m
} W) n+ b N- z* R
! l7 s& l( v- I. J8 G5 G2 L
3 Q" |4 j, F; P- x2 k
Example:
* G% |; U% s, \8 l. Z5 r9 x3 w. v ^ for (int i = 0; i < array.length; i++){4 J( i' x+ @, y$ _
System.out.println(i);, x# A4 J3 ]: M6 i9 }
}
; L& u* e( {9 A: _6 {$ A$ v1 j, r. M+ d B5 B* [2 _, G
3. do ... while
$ ?( c: b [2 `/ r$ y do ... while() 循环控制
2 ~6 w4 J9 k, a( R) d6 } do{
4 R G0 p+ }+ `, I //循环体$ N7 }0 I& n2 T$ J+ v }2 B; Q7 f
}while(布尔表达式);" @) L7 s: A3 X
Example:+ ^5 z4 q' P, z4 ]4 x5 l
do{6 v1 B$ m4 I! x% L; D8 y1 y, \
System.out.print("输入押注数量:");
8 R; w: E4 Q& L: N4 U( \5 e bet = console.nextInt();# z. f+ L4 d% |) u
}while(bet <= 0 || bet > balance); //否定条件
6 \- W+ z# h. m$ v
4 n6 x4 \- b; O; w: {& X+ l4. java Array# r6 @* f1 ?3 O
1) 数组变量的声明. [6 v; s8 J, q R/ _6 D
int[] ary; 声明了数组变量 ary, 数组变量是代词,
9 x* X0 c1 d9 d6 } int ary[]; 为了与C语法兼容的写法, 不建议写法,
+ g( t% h% u# b; W' b7 w* l3 A* f, g9 Z) ^% T! L* L; J
2) 数组对象动态初始化
R& z9 t7 b# _! |' O ary = new int[4]; //数组变量引用了具体数组对象, 就是代词1 i* P" B4 }, N
指代了具体事务.. V O) _* r* R+ M
数组元素是自动初始化的, 自动初始化为"零"值.
, I) N3 H7 H2 ~( H8 a7 ]0 {* D "零"值: 0, 0.0, \u0000, false, null5 E2 ~9 X" o& ]( o
ary = new int[]{1,2,3}; 直接给出元素的初始化: C8 ^9 ]. @+ x5 Z4 v: \
3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化, v! Z4 X, `& {/ V8 B7 X
* 不能用于赋值语句
, ?5 X/ N5 ] \' r% H b int[] ary = {1,2,3};
1 i% |$ G' z4 X3 r1 o/ _- d ary = {3,4,5,6};//编译错误
" y8 |7 B m& C+ X, S( |+ Q' q; C: h: \5 ]( O/ J( v6 l
Java关键字: if, public, class, else, while
& y6 ?, ~/ T- p" G0 X }# a& ?( v 特殊关键字: goto, const/ C2 j( d# Z1 m/ ]& Y1 y$ s0 g
java中 true, false, null 不是关键字, 是字面量!
; V+ \/ o# R; @2 }' @! V; j% e9 H5 m& n! j' q
4) 数组变量, 数组对象, 数组元素 + _) O( N5 U1 I1 S2 l
如: int[] ary = {1,2,3};
; p+ h# O6 J0 e! k. p$ b" | ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组( D4 i* A0 s! I( I
{1,2,3} 数组对象2 J7 l# i; g3 K; ?: }2 `
1,2,3 是数组元素1 R' w2 d% d* L) Y1 E
. K# W9 R6 N- c% J1 p$ S W 5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1 ( b5 k! P2 ^9 A; B
A 使用[下标] 访问数组元素/ O8 k& Y# }7 M8 V+ L( G
B 越界访问(小于0/大于等于n), 都会发生运行异常
" |' J4 u/ n' I+ X C 使用.length 属性可以获取数组对象长度
: h. w$ J: V' X' p" J! h
1 h" _# v P8 I- ^ V/ ^ F5 数组的复制与动态扩展算法- W* D4 O# d( y) y- F
1) 数组对象的复制
6 O) ^$ @9 [7 q, k9 K6 Z6 ?
( P; R3 S S. h) G& X 2) 数组的扩展问题
! N% |( O& P0 \* J! K1 [5 v 1 Java数组对象的大小是固定的, 数组对象是不能扩展的
# E3 b) ]4 B* }& c* l( u 2 利用数组复制到方法可以变通的实现数组扩展, m* [! E7 ]# f% Q4 W& \
3 System.arraycopy() 可以复制数组: z$ u7 k; K5 l/ Z2 y2 f" z
4 Arrays.copyOf() 可以简便的创建数组副本$ p; m$ J+ X" [
5 创建数组副本的同时将数组长度增加就变通的实现了9 a" W/ i$ a9 s Q8 m
数组的扩展# k& p& }# `) c4 `
- ]2 _# J- w8 ~- z' d+ z3 P
案例1 : 统计一个字符在字符串中的所有位置.
! k8 f8 f4 D& L5 ~, a0 A 字符串: 统计一个字符在字符串中的所有位置3 d# m# v0 G: w) P, E2 N
字符: '字'
& g$ O8 M1 w E4 s. u( I 返回: {4,7}8 o: f- q) [% d1 ^
$ Z" m5 V7 z- ^5 y2 X1 ?
6) 数组的迭代: 将每个数组元素重复的处理一遍.1 A4 J8 _- P6 w0 Z: V
for(int i=0; i<ary1.length; i++){3 g' x6 h, I! [( K2 j
System.out.print(ary1[i] + " ");
- I3 `* X3 F# K }
% @- u! m7 m) D3 j
7 R$ \1 q8 H9 N4 r 作业:
3 h& n) O" G& j; ]" x0 P 1 复习并且完成 全部 课堂演示代码, 添加适当的
: C3 }+ {- x, I8 g6 c& i, N) L9 S9 C( ` 输出语句, 研究输出结果, 添加适当的注释.
# O+ O5 y4 Y# y6 R) n4 j1 p$ O 2 实现案例:3 a! X& H6 r; L4 L6 b6 o* P
案例1 : 统计一个字符在字符串中的所有位置.: ~! [, B0 }: ^- Y3 A& b% g
字符串: 统计一个字符在字符串中的所有位置
& U' w8 m" V! p2 n. N; B0 ?8 a 字符: '字'. v$ p2 X, l4 y/ y7 L+ U. k
返回: {4,7}: k0 ~0 @5 n0 I
public static int[] count(String str, char key){}
+ S: H c5 l& k" T/ d, i4 y: I6 e
* c! \* A! K+ d" F& h char key = '字';
$ a/ W9 R% E: I! L# v1 F String str = "统计一个字符在字符串中的所有位置";
8 S* }/ u' z0 b! {) u# m1 e int[] count = {};
$ C/ q' H. v2 g for(int i=0; i<str.length();i++){
, J7 l7 f+ t8 N/ { char c = str.chatAt(i);% _- b( T; N: m& W' @
if(c==key){
; z( H2 d& X# ] //扩展数组,
( U0 Q1 q3 y% F3 h count = Arrays.copyOf(count, count.length+1);
4 \6 T. [0 g, z( } //添加序号 i
+ z, x% n C. S# Y( M9 S5 v count[count.length-1]=i;
7 L5 J) s4 J7 T8 R( k }( b9 ], t4 {1 t3 z7 `
}
7 j' y% N* |4 f; ~9 q* g 0 E, N9 a: u9 N4 v
- R' p" C5 ]! \8 L6 O3 ~
案例2 : 统计一个字符在字符数组中的所有位置.
- L8 I3 b- S5 a0 _, j 字符数组: 统计一个字符在字符串中的所有位置' m" N! a3 V/ v1 I( ^2 G
字符: '字'
8 q$ u2 o8 d# C. D; n' F, k, J 返回: {4,7}7 t0 c3 S, y! V) U5 U. U4 r
) t( _4 K8 P7 x' }2 J; X( L# R" z- p4 S
案例3: 字符串统计案例:) d9 q2 P8 \9 l+ Q k9 p
字符串: "123456789012"
3 }9 u6 J+ J+ s) F 将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1
% X/ _* s% _# I& |1 [! B 将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2- c( i0 p% y, q( ^ |1 n4 O" a
5 m- j4 d3 p! {3 ]2 \" i5 t) F 案例4: (选做) 将一个整数数位翻转& x# O, ^. Z7 {, |: W3 n6 b O
如: 整数 56123 int i =56123%10=3- C* ]+ H# v3 u6 m
int s=56123/10=5612
# d1 P& ]) Y5 w1 \- j* a& E ' K) X1 M$ m( E5 @; W( {+ n: \
) L# S9 n' v( X! e& [5 i, C/ n3 K) z
返回结果为整数: 32165! C& C# K# L6 \
提示: 使用 %10 获取最后一位
, I- I' F' V9 o3 Z0 J) |& K 使用 /10 去除处理完的最后一位
! T; I( ^- _% {& a3 r, ?. d) d1 f
|
|