该用户从未签到
|
1. while
, K9 y7 ]* L* _5 A; @# | While 循环控制
) d/ ^& g0 U# w% S. J" e7 ?% G2 l' X( B: I5 s) c
Scanner console = new Scanner(System.in);! X5 V2 [1 c& @! C* f
while(布尔表达式){
8 L7 C3 j) b6 C" X {8 P qty = console.nextInt();
( R4 x, i4 o7 k& [8 O; e if(qty>0 && qty<=5){ //五个以内
4 R, _5 c) u7 ]# f4 G% J' \# G& ` break; //打断, 打断当前循环
* _4 ^# ^& X' G7 a! N }+ ]9 S2 D4 c6 B" P& i
}6 F- O" e k* r0 P, n! H) M7 }7 `
3 h. D/ H0 {* |: U, o2. for 循环(主要用于几次的循环)
9 i6 n6 V0 x6 `7 @* H 循环控制* F9 I$ M" q8 n9 F/ |
for(初始化表达式;布尔表达式; 递增表达式){
: v9 g: [- i. a, C+ h6 t; l //循环体0 P! G, g* E* i8 [
}* X5 S7 Y5 D- ]( G
for(;;){
1 y" ?( N9 O! M J }( Q' P% ]6 _0 N
for(int a=1, b=3;;){
1 L( X$ j. i7 ^ `' t$ q }7 X, v' I7 v( w* {
+ V# E! J( Z0 G1 R* B1 y- \# _, y$ z6 N% }' D3 L1 J5 x) o) c
Example:7 _3 B; T! a' B% t
for (int i = 0; i < array.length; i++){# Q1 L- G& v6 S0 o4 y
System.out.println(i);
' G, Q8 f4 Z" Z, ^ }1 L& y' f% x: X. k+ Q4 \4 P
% G9 s$ d2 i: l4 U3. do ... while
& |+ R/ |' N: J- G do ... while() 循环控制% m% P$ r# H) a% l4 q. [' ?
do{6 H# v/ c1 }; J4 b0 L2 M$ B# Q
//循环体
5 @% w: B8 z! M% l; j" t }while(布尔表达式);1 Y3 I( n4 a2 @( X3 J& |0 z! f
Example:3 p. ?1 Q- G" b# _. m R& h+ l
do{
* c. E! M& @5 i8 c$ J! \9 F/ C) a System.out.print("输入押注数量:");
! ~" n! i: `4 Y' H% F. a bet = console.nextInt();* D- K, r4 ?/ `7 G. `& |8 d
}while(bet <= 0 || bet > balance); //否定条件
1 g5 Y% f+ G; X' W, ~$ l w3 @1 U6 F) Y* n+ o) r9 a
4. java Array2 v' D, F% k! M4 X
1) 数组变量的声明; z2 x9 U) y& Q0 \6 }
int[] ary; 声明了数组变量 ary, 数组变量是代词,
% u" d+ H7 o/ L int ary[]; 为了与C语法兼容的写法, 不建议写法,+ v2 f& R" {4 t% l
# W" w1 e5 o! h9 Z, @ 2) 数组对象动态初始化
2 e% ?: N1 L% t0 a/ y" s5 U% d ary = new int[4]; //数组变量引用了具体数组对象, 就是代词
* c6 P7 P) c5 j/ C1 { O2 ~! y4 w 指代了具体事务.
3 u5 u, I7 o4 u' ~' w' I9 s9 d# r4 F 数组元素是自动初始化的, 自动初始化为"零"值.
5 `* V0 T9 N' q$ W. X& `8 H1 b d "零"值: 0, 0.0, \u0000, false, null! @, y" k3 u$ P' I4 ~" l) e
ary = new int[]{1,2,3}; 直接给出元素的初始化
, w" M' \2 }7 x0 Y! P 3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化
9 a' c! K6 Q j& N; ~* H * 不能用于赋值语句
' d1 p0 U/ C. \ int[] ary = {1,2,3};4 J; r5 c. }: d" @+ O/ f& O
ary = {3,4,5,6};//编译错误
1 g" U. I" c& {* Y7 i1 Q
! v) e% O4 G1 a% q S# _ f Java关键字: if, public, class, else, while" t- H9 {- K; s8 w8 e& D7 U* A
特殊关键字: goto, const
9 B+ }3 w# `5 K java中 true, false, null 不是关键字, 是字面量!
. } O- z2 x7 |1 @' t3 b, h! m/ Z: S1 T. E( \9 G( i
4) 数组变量, 数组对象, 数组元素 7 V' d `$ c5 C, q$ T* u5 q3 }; x
如: int[] ary = {1,2,3};
$ R# F1 b, ^' |. E+ q* V ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组5 l5 G) f* L% O1 F( L
{1,2,3} 数组对象1 S; ]$ q- R- X0 h w, T
1,2,3 是数组元素
9 [' e1 y' R' `3 M2 N
* f& a. W' D' n$ P# F$ i. B 5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1 7 B2 I$ d$ b8 h0 N
A 使用[下标] 访问数组元素
- I3 T7 f x% G B 越界访问(小于0/大于等于n), 都会发生运行异常
1 u) L }7 I: h# n2 c" I; B C 使用.length 属性可以获取数组对象长度9 b* B( {; o+ o# Z, W4 K0 O8 D$ e
9 y- ~3 Q3 p, o! `
5 数组的复制与动态扩展算法" g' H1 {0 D8 T$ J+ v& L" a, u9 t
1) 数组对象的复制! K7 x5 M- v& h3 M
7 P' j u% W) i1 a0 F+ W 2) 数组的扩展问题: m5 F2 L- R1 q
1 Java数组对象的大小是固定的, 数组对象是不能扩展的2 z( d4 s$ z4 z6 A9 q8 F" C* [
2 利用数组复制到方法可以变通的实现数组扩展
4 c% o8 T, w% }3 r! `+ h 3 System.arraycopy() 可以复制数组1 _5 i/ o) @* H. W' B; g- X6 T) x; ^
4 Arrays.copyOf() 可以简便的创建数组副本9 m0 w7 G( U, e7 N5 T0 ~! b. g- H
5 创建数组副本的同时将数组长度增加就变通的实现了
+ r- g/ |: J: e( d9 t' E1 n 数组的扩展 T* Y7 }- t( z. w
# \+ y- P5 X# X7 {9 G9 F( J 案例1 : 统计一个字符在字符串中的所有位置.- ^- Z6 N k1 d) Z2 d. R
字符串: 统计一个字符在字符串中的所有位置
M( ]; K# x- A4 u$ ^1 ? _$ W 字符: '字', \0 X: O6 P) X# U
返回: {4,7}
% O& k0 `, ?+ F. t, b* U( ]8 k+ ~3 @% H
6) 数组的迭代: 将每个数组元素重复的处理一遍.! @- d6 p6 g) k. `( g/ t, h
for(int i=0; i<ary1.length; i++){4 C4 r! X5 ]/ A3 E8 [3 h$ Z
System.out.print(ary1[i] + " ");
$ s. f& s& E$ O7 K( m( B8 {+ J }
3 F5 _. A7 K) `, B
0 a0 o3 ~( L$ L9 D 作业:
) p) B# a! V' s 1 复习并且完成 全部 课堂演示代码, 添加适当的
: W8 t; X& s3 q9 ^ 输出语句, 研究输出结果, 添加适当的注释., W# ~& e) p( H0 Y! y* _( \
2 实现案例:
. Q' w* r/ D7 s9 V 案例1 : 统计一个字符在字符串中的所有位置.
! V# {# P5 ^* H# T$ O7 t& Y* \ 字符串: 统计一个字符在字符串中的所有位置
b' `; a B4 {: X 字符: '字'
* n. U+ o* L8 i6 A, ]/ N 返回: {4,7}2 c3 a" Z: ^, q \
public static int[] count(String str, char key){}
, [6 I, w W& E: j
" M' `! B. r' K( Z8 Y, ^& [* O char key = '字';
$ o$ g8 k; o4 O7 s String str = "统计一个字符在字符串中的所有位置";
4 L* L* E+ O2 d0 \% R/ F0 X int[] count = {};
" ^6 Q0 s; z5 ]: [ B for(int i=0; i<str.length();i++){
, @) X: e; |6 B2 P% u* Z char c = str.chatAt(i);
" H, [5 m' W+ O1 i+ Z5 m/ U if(c==key){. G& H+ A# v H8 k: S3 o
//扩展数组, ; K0 i% e4 C- Z$ b+ H. f1 x! y" U
count = Arrays.copyOf(count, count.length+1);
. L' z8 b0 a4 t# U) j& P/ p& w //添加序号 i
X ?, B q# z* V# [ count[count.length-1]=i;
9 d3 O5 v% C6 X }7 z% q! i6 L" i* S& _3 Q# t
}0 L; z( W4 Y, R; l6 G9 u( S. E n
( C) H' X& g: s) |( U0 R" k$ n5 L# M @
案例2 : 统计一个字符在字符数组中的所有位置.
1 Z# i5 a: a0 y7 l 字符数组: 统计一个字符在字符串中的所有位置3 u8 R+ M6 G( d4 |3 ?
字符: '字'9 G; E* o5 B/ D( \5 I( A
返回: {4,7}- J+ O" r) y( u
8 M7 U. K- `! y N
案例3: 字符串统计案例:, d2 S. N5 |" E
字符串: "123456789012") v$ M( c, a- l$ ~7 H
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1. |6 L% O# R4 P; q( L$ a0 U
将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2* }) b* W7 c5 N$ F9 z$ V
3 c7 `" R+ t" r K1 ]$ y8 ]8 z/ f
案例4: (选做) 将一个整数数位翻转
. P1 g$ s* d5 N$ U 如: 整数 56123 int i =56123%10=3
$ u; W+ ~9 J, V( Q! O% H8 b6 W int s=56123/10=5612
7 E/ T! S, b8 l$ ?- w# @( y
' k2 ]3 G0 d4 U4 N# O0 J9 Q' `# A0 M! Y4 {2 L6 {
返回结果为整数: 32165
' V* Q. W, f. M* J6 ^ 提示: 使用 %10 获取最后一位
, E. k7 ~" `( | G* O" H 使用 /10 去除处理完的最后一位
0 d" j9 C3 |0 Y$ i# ?
7 w( m Z% T" y3 A) A, t5 [1 w |
|