与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流。本文将简单讲解条件、循环和switch。
一、块作用域
块(block),即复合语句。是指由一对大括号括起来的若干条简单的Java语句。块确定了变量的作用域。
比如:
1 public class Code { 2 static 3 { 4 System.out.println("1"); 5 } 6 { 7 System.out.println("2"); 8 } 9 public Code() 10 { 11 System.err.println("3"); 12 } 13 public static void main(String[]args) 14 { 15 new Code(); 16 } 17 }
注意:不能在嵌套的两个块中声明同名的变量。
二、条件语句
格式1:
if(condition)
{
statement1
statement2
........
}
例如:
1 if(youSales>=target) 2 { 3 performance="Satisfactory"; 4 bonus=1000; 5 }
格式2:
if(condition)statement1 else statement2
例如:
1 if(youSales>=target) 2 { 3 performance=“Satisfactory”; 4 bonus=100+10*(youSales-target“); 5 } 6 else 7 { 8 performance=”Unstatisfactory“; 9 bonus=0; 10 }
三、循环
当条件为true时,while循环执行。
格式1:
while(condition)statemnet
例如:
1 while (balance<goal) 2 { 3 balance+=payment; 4 double interest=balance*interestRate/100; 5 balance+=interest; 6 years++; 7 }
格式2:
do statement while(condition);
1 do 2 { 3 balance+=payment; 4 double interest=balance*interestRate/100; 5 balance+=interest; 6 7 year++; 8 9 System.out.printf("After year %d,your balance is %,.2f%,year,balance"); 10 11 System.out.print("Ready to retire?(Y/N)"); 12 input=in.next(); 13 } 14 while(input.equals("N")); 15 16 }
四、确定循环
for循环语句是支持迭代的一种通用结构,利用每次迭代之后更新的计数器或类似的变量来控制迭代的次数。
格式类似如下:
for(int i=0;i<x.length;i++)
System.out.println(i);
例子4个:
1 public class ShuZu1 { 2 public static void main(String[]args){ 3 int [][] x={{1,2,2,2,2},{3,3,3,3,3},{4,5,-1,17,55}}; 4 int result=qiuHe(x); 5 System.out.println("和是"+result); 6 } 7 public static int qiuHe(int[][]x){ 8 int s=0; 9 for(int i=0;i<x.length;i++) 10 { 11 for(int j=0;j<x[i].length;j++) 12 { 13 s+=x[i][j]; 14 } 15 } 16 return s; 17 } 18 }
1 public class ShuZu2 { 2 public static void main(String[]args){ 3 int [][] x=new int[7][7]; 4 //生成随机数组,注意没有返回值,另外打印一行字 5 suiJi(x); 6 System.out.println("生成的数组是:"); 7 8 //显示数组内容,注意没有返回值 9 showArray(x); 10 11 //取值 12 float result=getAvg(x); 13 System.out.println("平均数是"+result); 14 15 } 16 static float getAvg(int [][] x){ 17 float s=0; 18 for(int i=0;i<x.length;i++){ 19 for(int j=0;j<x[i].length;j++){ 20 s+=x[i][j]; 21 } 22 } 23 return s/(x.length*x[0].length); 24 } 25 static void suiJi (int[][]x){ //这里我出错了。返回值写了int型,不应该的。思考一下。 26 for(int i=0;i<x.length;i++){ 27 for(int j=0;j<x[i].length;j++){ 28 x[i][j]=(int)(Math.random()*10); 29 } 30 } 31 } 32 static void showArray(int[][]x){ //这里我出错了。返回值写了int型,不应该的。思考一下。 33 for(int i=0;i<x.length;i++){ 34 for(int j=0;j<x[i].length;j++){ 35 System.out.print(x[i][j]+" ");// 给数据空格 36 } 37 System.out.println();//打印换行 38 } 39 } 40 }
1 import java.util.Arrays; 2 public class SuZu3{ 3 public static void main(String[] args) { 4 int [] x={2,-1,7,777,6,764,85896,65554,0,874785,417825,74}; 5 sort(x,'n'); 6 for(int i=0;i<x.length;i++){ 7 System.out.print(x[i]+" "); 8 } 9 } 10 //给数组进行选择性排序 11 //调用API进行升序 12 static void sort(int[]x,char Flag){ 13 if('A'==Flag){ 14 Arrays.sort(x); 15 } 16 else { 17 for(int i=0;i<x.length-1;i++){ 18 for(int j=0;j<x.length-1-i;j++){ 19 int temp=0; 20 if(x[j]<x[j+1]){ 21 temp=x[j]; 22 x[j]=x[j+1]; 23 x[j+1]=temp; 24 } 25 } 26 } 27 } 28 } 29 }
1 import java.util.Scanner; 2 3 public class Suzu4 { 4 public static void main(String[] args) { 5 System.out.println("请输入");//这个命令只能紧贴在Scanner scan = new Scanner(System.in);的上面或下面才有效。 6 Scanner scan = new Scanner(System.in); 7 //System.out.println("请输入");或者放在Scanner scan = new Scanner(System.in);的下面 8 String str = scan.nextLine();// nextLine才是接收一行 9 10 char[] s = str.toCharArray();// 把字符串转换称一个字符数组 11 scan.close(); 12 int letterCount = 0; 13 int numberCount = 0; 14 int spaceCount = 0; 15 int otherCount = 0; 16 for (int i = 0; i < s.length; i++) { 17 if (s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z') { 18 letterCount++; 19 } else if (s[i] >= '1' && s[i] <= '9') { 20 numberCount++; 21 } else if (s[i] == ' ') { 22 spaceCount++; 23 } else { 24 otherCount++; 25 } 26 } 27 System.out.println("字母有" + letterCount + "个"); 28 System.out.println("数字有" + numberCount + "个"); 29 System.out.println("空格有" + spaceCount + "个"); 30 System.out.println("其他有" + otherCount + "个"); 31 } 32 }//ctrl+shift+f 是代码格式化 33 //ctrl+shift+o 是导包
五、多重选择:switch语句
格式类似如下:
switch(choice)
{
case 1:
........
break;
case 2:
.......
break;
.........
//可以再来几个case(用break结束一下)
default:
.......
break;
}
注意:
case标签可以是:
* 类型为char、byte、short或int的常量表达式。
* 枚举常量
* 从Java SE 7开始,case标签还可以是字符串字面量。