|
该用户从未签到
|
1. while. J/ b. n% |+ V2 V
While 循环控制
8 v; V: W4 c" F, o( {$ v! S! \; \* D0 q4 Q5 i
Scanner console = new Scanner(System.in);, i7 L3 b) P( }: v3 V1 T% A- U
while(布尔表达式){' Z4 Q5 ^: s% ?. r0 p% v
qty = console.nextInt();+ s8 g# I) |" P% [$ O* h" ]2 p/ W
if(qty>0 && qty<=5){ //五个以内+ i* u# w! {; V7 I, d3 k2 g
break; //打断, 打断当前循环
# ?6 s1 ` B2 Q4 S& ~ K* ~ }
' U8 R8 r! L" W; E8 c }" m$ N. _4 J a" d* Q* W I2 ^# ]. R
6 ?/ f. S0 x: ]" s6 R5 d# l9 @
2. for 循环(主要用于几次的循环)
4 v5 f' @& O7 h( i& ~ 循环控制- c0 a+ } l% s( ]1 S/ s
for(初始化表达式;布尔表达式; 递增表达式){
; f8 S0 y6 a# ]7 k; r; o //循环体
# R; C9 Q' X, I% A }
" @4 O! U3 e# X8 C* G for(;;){
' z" s' H+ U5 l9 S/ Z }
% U% B% J c3 [! q4 y9 U$ j1 ? for(int a=1, b=3;;){
+ G! q9 M4 p. _" B }
j/ j- L& T7 f! E, ~9 H( |
" S" z! S+ ]9 E4 X; r+ V( h" \4 [
Example:- ~! F4 C! D3 h' a+ ]: t4 m7 l
for (int i = 0; i < array.length; i++){
) p; }4 ]& Y% o9 m' E ] System.out.println(i);
- t! ~4 K9 a6 O1 o. N# n* L9 n }
) o0 A- A& {: ~5 P& W! C+ U. s) m Y* c7 J% W" o
3. do ... while
$ t: Q4 k# e0 Z3 u5 L v do ... while() 循环控制! c* _* {" B! G) ~
do{
3 L' o: ^6 n. I9 C9 X, z1 `5 b, ^ //循环体
& d, A) k" E2 P* m }while(布尔表达式);* w6 `. F2 C* M$ `; E
Example:
: D8 x9 ]. V# A/ p do{& |- i- A! E* F" X0 I4 P
System.out.print("输入押注数量:");
2 l) D' d0 q% @% S) `* }8 ^, w- L bet = console.nextInt();
8 Y. e: ^2 I1 N0 e9 a, N }while(bet <= 0 || bet > balance); //否定条件( z$ d+ U. Y2 b
6 r, q$ C4 n6 h' q
4. java Array
0 i( z: d0 |1 h* N7 n, ] 1) 数组变量的声明4 k* W# g; v8 @; r8 J: S3 w6 _
int[] ary; 声明了数组变量 ary, 数组变量是代词,1 { d, J/ A* X& j. f
int ary[]; 为了与C语法兼容的写法, 不建议写法,
8 A* {) C+ T) M/ a8 [2 _6 l; n" i7 i
2) 数组对象动态初始化7 x7 K; ], e) e* F. ^
ary = new int[4]; //数组变量引用了具体数组对象, 就是代词 m8 H. f" M" f: ?: F2 g- W6 d( o
指代了具体事务. i, v7 q# N8 k+ x9 n8 Z
数组元素是自动初始化的, 自动初始化为"零"值.
: h+ m/ Z( `" Q5 ? "零"值: 0, 0.0, \u0000, false, null
0 P( z0 g- x9 i+ ~4 z# ? b ary = new int[]{1,2,3}; 直接给出元素的初始化' }: T# s$ j' n! o/ I) j1 R
3) 数组对象的静态初始化, 只能用在声明数组变量时候同时初始化
7 t. o4 y% O1 \/ e$ \1 c% S * 不能用于赋值语句9 c2 x; ]! G2 @" b+ O* _
int[] ary = {1,2,3};+ W$ { q; ]4 B. R# B
ary = {3,4,5,6};//编译错误. X0 j8 ~4 S) h
# f' P9 Y- G/ _
Java关键字: if, public, class, else, while9 E' l! x# F# _5 r
特殊关键字: goto, const" z+ _+ ?1 c$ n, I' s% j
java中 true, false, null 不是关键字, 是字面量!
$ ~9 b# M- D6 { j" i1 ~4 ^2 A! J1 i! C/ l* a
4) 数组变量, 数组对象, 数组元素 2 W1 F) n1 M/ n, D, L# V
如: int[] ary = {1,2,3};( D! Q3 ^6 k8 t* Z3 b( a ^9 d
ary 是 数组变量 指代一个具体的数组, 同一个变量指代不同的数组
4 A6 ^4 t- I6 D/ c2 t% { {1,2,3} 数组对象% o+ \& k4 p8 _6 g+ O w
1,2,3 是数组元素
/ |# T* J9 n( M3 Y
' I& X9 {& X2 Z, r& w5 z, ^$ d 5) 数组元素的访问, 数组对象的大小是固定的,长度是n,下标: 0~n-1 3 g4 O* k, b" F9 k, w
A 使用[下标] 访问数组元素! y& e$ C! R" y4 k
B 越界访问(小于0/大于等于n), 都会发生运行异常
J B6 T; u& V7 X4 Q3 ^ C 使用.length 属性可以获取数组对象长度
' c# S7 M& V+ o- p6 t5 v* u
* s( U6 E1 U8 B3 m5 m- o1 U( @5 数组的复制与动态扩展算法
+ n f* E6 [( f, c! V9 Y' s 1) 数组对象的复制
( g3 R0 s3 ~3 }# O! g8 N$ @
5 o/ i+ g# |6 n& a 2) 数组的扩展问题
1 R% O0 e T! z2 P' _2 r* X6 w 1 Java数组对象的大小是固定的, 数组对象是不能扩展的% N5 x r# v. a" @9 ?7 M1 V
2 利用数组复制到方法可以变通的实现数组扩展% {9 r$ M% {' D: v7 o1 {
3 System.arraycopy() 可以复制数组3 u/ _; e: m; R$ c/ H' {/ p
4 Arrays.copyOf() 可以简便的创建数组副本
! J/ K7 Q3 x3 [: t8 n 5 创建数组副本的同时将数组长度增加就变通的实现了
# I8 X( {; `/ {' R, }; P+ X8 } 数组的扩展
" O3 l( e& D' G9 S7 k; t$ A# N' g* h( O! Q) _
案例1 : 统计一个字符在字符串中的所有位置.
/ W! m! Z3 J1 M, n" |0 F1 u 字符串: 统计一个字符在字符串中的所有位置
0 I6 E7 p) ]4 D f 字符: '字'
+ g4 |7 t. G; R3 K" X/ o$ c/ [4 r 返回: {4,7}8 x: h0 M; p0 a. O
! p8 g% j9 u6 u, P# i- n8 h' B/ K6) 数组的迭代: 将每个数组元素重复的处理一遍.8 [! D9 v# b+ X3 x! @- y) e
for(int i=0; i<ary1.length; i++){2 Q0 {" H* l% s1 M0 a- E. s1 X
System.out.print(ary1[i] + " ");
( e/ i% E+ f" z8 q/ I% k! c- T7 y6 |& g }: `8 o ~4 R. s5 c8 f$ L: J' J& k8 K
3 \: q1 D' B2 }7 F6 l7 [3 ] K 作业:
0 ^" s0 m- p. u! i8 `$ h 1 复习并且完成 全部 课堂演示代码, 添加适当的
s9 a$ O9 W" | 输出语句, 研究输出结果, 添加适当的注释.
* t5 H8 H+ k. }0 V4 }4 _2 w6 W 2 实现案例:8 g$ P; o' T- i( x' {6 i
案例1 : 统计一个字符在字符串中的所有位置.
6 O# q! S/ x7 b; c+ [' g 字符串: 统计一个字符在字符串中的所有位置
" Q* H- Z" v! v" D& g( w$ z! V 字符: '字'9 D* }- B' T7 p/ D' a/ g% E7 X, W% }/ |
返回: {4,7}+ J8 s; ] Q& U; B: w' u
public static int[] count(String str, char key){}1 R' v1 W9 R6 ^- r
2 |- R G6 {* \( E! f7 u char key = '字';
. v8 g& y3 J/ F2 ]& j- \" o String str = "统计一个字符在字符串中的所有位置";
, X4 B8 A8 _- u' a* T% J int[] count = {}; 0 q, g+ D4 W8 Z8 ~6 Q
for(int i=0; i<str.length();i++){* H" n% X4 G# i2 @0 s
char c = str.chatAt(i);
U3 W% r1 k1 e% q if(c==key){
" i+ @8 J1 p( X //扩展数组,
9 l. E! k$ H# @6 {' C, Y1 U count = Arrays.copyOf(count, count.length+1);# }$ j& c P/ r5 ?/ `+ a+ B$ R' \
//添加序号 i' I1 I% y9 C4 o9 Z
count[count.length-1]=i;- r8 m% h5 Q! M* ]6 ^
}- n+ y& I- g9 B5 Z) K
}7 w6 I+ @( C4 F* X3 y& R2 b6 e
9 Y( l! w/ A$ C# {- y! k
: c& S$ s3 t- b; J# f 案例2 : 统计一个字符在字符数组中的所有位置.
. }! x1 k' ?; |& Y. ^# V& }. U 字符数组: 统计一个字符在字符串中的所有位置# g' S. u8 o1 O+ F, ] P. Q& Q T
字符: '字'
( K2 S* |2 p& T4 p8 d4 l 返回: {4,7}
7 s- s1 U3 z; ~
( r3 \. c( D5 y: M! g7 X/ u* Z 案例3: 字符串统计案例:
. n3 T# J# h0 q& y% }( _ 字符串: "123456789012"5 B& l$ Y9 H0 j8 Q* _
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1
6 F3 U5 Z$ `' v* Y( w* R: } 将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2) v) v6 D$ q$ K4 L( s2 f. E6 W
- R: \3 B, w$ |7 ]
案例4: (选做) 将一个整数数位翻转
: i7 k/ g5 @0 A 如: 整数 56123 int i =56123%10=3
- e. P" \5 T# h* { int s=56123/10=5612
; [* s9 o. p% \# e, h+ H, m 1 C- I8 L" \6 W1 ~! m
5 e# m* M9 q" I' M 返回结果为整数: 32165
! D/ ^2 r+ V/ A; i- h 提示: 使用 %10 获取最后一位0 [% ]' A; x+ |9 b4 }# `* G
使用 /10 去除处理完的最后一位# u3 w2 C. B0 g+ @: Y, h
; \4 }5 @: y, a! H6 j& k* x2 N
|
|