目录

流程控制

1.条件语句
2.switch多重选择语句
3.while循环
4.do/while循环
5.for循环
6.中断控制语句

数组

1.一维数组
2.多维数组

练习代码

1.双色球
2.五子棋

流程控制
1.条件语句
(1)条件语句几种格式:

if(条件语句){…}
 if (条件语句){…}else{…}
 if (条件语句){…}else if(条件语句){…}
 if (条件语句){…}else if(条件语句){…}else{…}


下面展示一些 条件语句练习代码

package day02;
 /** * if语句练习*/
 import java.util.Scanner;
  public class Demo1 { 	public static void main(String[] args) {		     
  System.out.println("请输入考试成绩:");		
  Scanner input = new Scanner(System.in);      
    int s = input.nextInt();       
   /* if(s<60) {        	
    System.out.println("你的成绩有待提高,加油把骚年");  
          }else{        	
          System.out.println("成绩不错,继续努力!");        
          }*/       
           if(s<0 || s>120){        
           System.out.println("考试成绩不存在");     
            }else if(s>90){        	
            System.out.println("成绩优秀,干的漂亮");     
            }else if(s>80){        	
           System.out.println("成绩良好,继续保持");   
            }else if(s>70){        
           System.out.println("成绩合格,多加努力"); 
            }else {      
           System.out.println("成绩不合格,寻找原因");   
                }
             } 
           }

2.switch 多重选择语句 :
格式:

switch(表达式){
 case 取值 1: 语句块 1;
 break;
 case 取值 n: 语句块 n;
 break;
 default: 语句块 n+1;
 break;
 }


下面展示一些 练习代码

package day02;
/** * switch语句练习*/
import java.util.Scanner;
 public class Demo2 { 
 	public static void main(String[] args) {		
 	System.out.println("请输入一个月份(1-12月):");     
 	    Scanner input = new Scanner(System.in);      
 	       int text=input.nextInt();        
 	        switch (text) {		
 	          case 1:		
 	          case 2:		
 	          case 3:			
 	           System.out.println("春季");	
 	            break;		
 	          case 4:		
 	          case 5:		
 	          case 6:		
 	           System.out.println("夏季");		
 	            break;		
 	     	   case 7:		
 	     	   case 8:		
 	     	   case 9:			
 	     	    System.out.println("秋季");	
 	     	     break;	
 	     	    case 10:
 	     	    case 11:	
 	     	    case 12:		
 	     	     System.out.println("冬季");	
 	     	       break;		
 	     	    default:		
 	     	     System.out.println("输入有误,请检查");
 	     	      break;	
 	     	}	
 	     }
 	   }

3.while循环
符合条件,循环继续执行;否则,循环退出 特点:先判断,再执行
语法格式:while(条件表达式){

//语句块;
 }


下面展示一些 练习代码小例子

例子:录入班级人数和学员成绩,计算班级学员的平均成绩
int sum = 0; 
int score = 0; 
int avg = 0; 
int studentNum = 20; 
while(i<=studentNum){ 
System.out.print("请输入第" + i + "位同学的成绩:"); 
score = input.nextInt(); sum = sum + score; i++;
 }
 avg = sum / stuNum ;

4.do/while循环
先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出
特点:先执行,再判断
语法格式:
do { 循环操作 }while ( 条件表达式);
下面展示一些 小例子

例子:首先计算退休账户中的余额,然后再询问是否打算退休:
 do{
 balance += payment;
 double interest = balance * interestRate / 100;
 balance += interest;Year++; 
 // print current balance// ask if ready to retire and get input
 }while (input. equals ("N"));
 只要用户回答“ N”,循环就重复执行。这是一个需要至少执行一次的循环,
 因为用户必须先看到余额才能知道是否满足退休所用。

5.for循环
语法格式:for(初始化参数;判断条件 ;更新循环变量){ 循环体; }
下面展示一些 小例子

// A code block
var foo = 'bar';
例子:计算抽奖中奖的概率。如果必须从 1 ~ 50 之间的数字中取 6 个数字来抽奖,
 那么会有 (50 x 49 x 48 x 47 x 46 x 45)/ (1 x 2 x 3 x 4 x 5 x 6) 种可能的结果,
  所以中奖的几率是 1/15890700。
 public class LotteryOdds {
 public static void main(String口 args) { 
 Scanner in = new Scanner(System.in); 
 System,out.print("How many numbers do you need to draw? ");
  int k = in.nextlnt();
  System.out.print("What is the highest number you can draw? ");
   int n = in.nextlnt();
    int lotteryOdds = 1;
    for (int i = 1; i <= k; i++){
     lotteryOdds = lotteryOdds * (n - i + 1) /i;
      System.out.println("Your odds are 1in " + lotteryOdds + Good luck!");
      }
     }
    }

6.中断控制语句
break和continue
break:用于终止本轮所有次循环。
continue:用于终止本轮本次循环。
下面展示一些 例子

for( int i=0;i<10;i++){
If(i==5){ 
  break;
  }
  System.out.println(i);//执行01234结束
  } 

for( int i=0;i<10;i++){
If(i==5){  
 continue;
 }
 System.out.println(i);//执行012346789结束
 }

数组
常用格式 1. 数据类型[] 数组名称 = new 数据类型[数组长度];
常用格式 2. 数据类型[] 数组名称 = {数组内容 1,数组内容 2,…数组内容 n};

数组下标int[] arr = new int[10];

arr[5] = 123;
 System.out.println(arr[5]);

要想获得数组中的元素个数,可以使用 array.length。
例如,for (int i = 0; i < a.length; i ++)System.out.println(arr[i]);

数组常用算法:冒泡排序和二分查找: 例子

package day; 
public class Demo2 {
   public static void main(String[] args) {
   	 //排序并查找	 	
   	 	int [] nums = {1,3,9,5,6,7,15,4,8};//创建数组	 
   	 	int temp;//创建临时变量方便调换	 
   	 	//外层循环控制比较的轮数,次数为length-1  	
   	 	for (int i=0;i<nums.length-1;i++) {
   	 	//内层循环控制的是每轮比较的次数,第i轮,i从0开始计算      
   	 	  for(int j=0;j<nums.length-i-1;j++) { 
   	 	   if(nums[j]>nums[j+1]) {  //两两比较,满足移动条件	
   	 	    	temp = nums[j];	 
   	 	    	nums[j] = nums[j+1];
   	 	    	 nums[j+1] = temp;	
   	 	    	  }	 		
   	 	    	}		
   	 	    }	 	
   	 	   for (int i=0;i<nums.length;i++) {
   	 	    	System.out.println(nums[i]);	
   	 	    }	 	
   	 	    int num = 6;//要查找的数据	
   	 	    int minIndex = 0;//最小下标	
   	 	    int  maxIndex= nums.length-1;//最大下标	
   	 	    int centerIndex = (minIndex+maxIndex/2);//中间下标	 
   	 	    	while(true) {
   	 	    	 if(nums[centerIndex]>num) {	 //中间数据较大	 	
   	 	    	 maxIndex = centerIndex-1;	 
   	 	    	}else if(nums[centerIndex]<num) {	 //中间数据较小	
   	 	    	 minIndex = centerIndex+1;
   	 	    	}else {	 
   	 	    	//找到了数据	 
   	 	    	break;	 	
   	 	    	}	 	
   	 	    	if(minIndex>maxIndex) {
   	 	             centerIndex = -1;
   	 	             break;	 	
   	 	         }	
   	 	centerIndex = (minIndex+maxIndex/2);//边界发生变化时更新下标
   	}	 	   
   	  System.out.println("位置"+centerIndex); 
   }
 }

下面展示一个 数组运用小例子

// A code block
var foo = 'bar';
package day;
/** * 班级里所有人有个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数)
, * 凡报到3的人退出圈子,问最后留下的当选为班长,问班长是原来第几号的那位。
 * @author jade * */
import java.util.Scanner; 
public class Demo5 {
 public static void main(String[] args) {
  Scanner input = new Scanner(System.in);
  System.out.println("请输入班级总人数:");
  int num = input.nextInt(); 
 Boolean [] arr = new Boolean [num];//创建一个班级人数的数组
  for (int i = 0; i < arr.length; i++) {    
     arr[i] = true;} // 遍历数组,第一次所有人都在圈内
     //报数  
     int leftCount = num;  
     int countNum = 0;//计数值
     int index  =  0;//下标     
        while (leftCount > 1) { 
         if (arr[index] == true) {
         countNum++;//假设有10个人,第一轮第1,2,4,5,7,8,10为true,  
          if (countNum == 3) { 
             countNum = 0;
              arr[index] = false;//报到3,6,9时退出圈子,第2轮2,7退出圈子,类推     
               leftCount--;//总人数第一轮减3;  
               }   
           }        
               index++;   
                 if (index == num) {  
                    index = 0;   
                    }   
                  }       
                   for (int i = 0; i < num; i++) { 
                     if (arr[i] == true) {
                System.out.println("班长是原来排在第" + (i + 1) + "位的那个。");
         }             
     }
  } 
}

总结练习小代码
1.双色球
双色球代码编写笔记:
任务描述: 双色球投注区分为红球号码区和蓝球号码区,红球号码范围为01~33,
蓝球号码范围为01~16。双色球每期从33个红球中开出6个号码(不能重复),
从16个蓝球中开出1个号码作为中奖号码,双色球玩法即是竞猜开奖号码的6个红球号码和1个蓝球号码,顺序不限。
用户输入红球和蓝球号码,程序输出该用户中几等奖。

程序思路:定义数组存放红球和蓝球号码范围,然后使用random生成随机0到32的下标,产生6个不重复随机数并将系统随机生成的6个数据放在数组中与用户输入的进行对比,满足中奖条件则输出。
代码

package game;
import java.util.Arrays;import java.util.
Random;import java.util.Scanner;
/** * 双色球投注区分为红球号码区和蓝球号码区,红球号码范围为01~33, 
* 蓝球号码范围为01~16。双色球每期从33个红球中开出6个号码(不能重复),
*  从16个蓝球中开出1个号码作为中奖号码,双色球玩法即是竞猜开奖号码的6个红球号码
* 和1个蓝球号码,顺序不限。
* 用户输入红球和蓝球号码,程序输出该用户中几等奖。
*  * @author jade */
public class Doublecoloarball { 
  public static void main(String[] args) {
   int [] redArr =  {1,2,3,4,5,6,7,8,9,10,
   	            11,12,13,14,15,16,17,18,19,20,	         				               
   	            21,22,23,24,25,26,27,28,29,30,31,32,33};//数组存放红球1-33的号码
  int [] redBall = new int[6];//定义数组存放系统随机生成的红球	
  int []userRedBall = new int[6];//定义数组存放用户键盘输入的红球
  Random random = new Random();	
  for (int i=0;i<redBall.length;i++) {		
  	//生成随机0到32的下标,产生6个不重复随机数	
  	int index = 0;	
  	while(true) {	
  	index = random.nextInt(33);  //返回一个0-32之间的一个随机数	
  	 if(redArr[index]!=-1) {  //根据产生随机数(数组下标)取出对应的值	
  	   redBall[i] = redArr[index];
  	   redArr[index] = -1;
		break;	
		}	
	}		
 }		
 //用户输入	
 	Scanner sc =  new Scanner(System.in);
 	System.out.println("请输入你要打的红色球号码(1-33选,不能重复,选6次):");
 	for(int i=0;i<userRedBall.length;i++) {	
 	userRedBall[i] = sc.nextInt();//捕获用户键盘输入的数组
 }		
    int BlueBall = 0;//定义一个变量,存放系统随机生成的蓝色球	
    int userBlueBall = 0;//定义一个变量,存放用户键盘输入的蓝色球	
     BlueBall = random.nextInt(16)+1; //获取蓝色球数	
     System.out.println("请输入你要打的蓝色球号码,1-16之间选,选1次");
     	userBlueBall = sc.nextInt();	
 //用户输入的数与随机数相比,判断是否中奖
 	int redCount = 0 ;//存放正确的红球数
 	 for(int i=0;i<redBall.length;i++) {	
 	  for(int j=0;j<userRedBall.length;j++) {
 	   if(redBall[i]==userRedBall[j]) {				   
 	       redCount++;		
 	}	 
    }	
}			
          int blueCount = 0 ;//存放正确的蓝球数		
          	if(BlueBall==userBlueBall) {
          		blueCount++;
	}          
 //中奖条件	
  if(blueCount==0 && redCount <= 3){
  System.out.println("抱歉,您没有中奖!");	
  }else if(blueCount==1 && redCount<3){
  System.out.println("恭喜你中了六等奖,5块钱!");	
  }else if((blueCount==1 && redCount==3) || (blueCount==0 && redCount==4)){
System.out.println("恭喜你中了五等奖,10块钱!");	
  }else if((blueCount==1 && redCount==4) || (blueCount==0 && redCount==5)){
  System.out.println("恭喜你中了四等奖,200块钱!");	
   }else if(blueCount==1 && redCount==5){
 System.out.println("恭喜你中了三等奖,3000块钱!");
   }else if(blueCount==0 && redCount==6){
 System.out.println("恭喜你中了二等奖,500w!");	
   }else if(blueCount==1 && redCount==6){
  System.out.println("恭喜你中了一等奖,1000w!");	
     }else{	
 System.out.println("系统有误,中奖无效!");
 }		
 System.out.println("本期开奖红球号码:" + Arrays.toString(redBall) + "蓝球号码" + BlueBall);			
 System.out.println("用户选择红球号码:" + Arrays.toString(userRedBall) + "蓝球号码" + userBlueBall);		
   }
 }

2.五子棋
目标: 编程实现控制台版并支持两人对战的五子棋游戏
(1)绘制棋盘
(2)提示黑方(用 1 表示)和白方(用 2 表示)
分别下棋(X,Y 轴位置)并重新绘制棋盘。
(3)每当一方下棋后判断是否获胜 。
(4)提示:采用二维数组来模拟棋盘。

程序思路:(1)绘制棋盘:首先绘制棋盘采用二维数组创建一个16*16的二维数组int[][] checkerboard = new int [16][16];将首行首列遍历一遍覆盖0输出0-15打印棋盘。

(2) 下棋:创建一个布尔量作为判定条件,首先黑方回合:用户输入x,y坐标并将该坐标原来的0覆盖成1代表黑方棋子,并重新输出棋盘,当每一次下子完毕后,判断是否获胜,当获胜时即输出某方获胜结束游戏。

(3) 判断获胜情况:四种获胜情况即横竖左斜和右斜

Java语言基本语句 java常用语句大全_java


Java语言基本语句 java常用语句大全_System_02


代码

package game;
import java.util.Scanner;
public class Gobang {
 public static void main(String[] args) {
//绘制棋盘	
int[][] checkerboard = new int [16][16];	 
 for(int i=0;i<checkerboard .length;i++) {
   checkerboard [0][i] = i;	
   checkerboard [i][0] = i;	
}		
//提示黑方(用 1 表示)和白方(用 2 表示)分别下棋(X,Y 轴位置)并重新绘制棋盘。
Scanner input = new Scanner(System.in);	
Show(checkerboard);	
boolean flag = true;	
int x;		
int y;	
while(true) {	
do {	
System.out.println("请输入黑方落子位置例如(4 3):");
x = input.nextInt();	
y = input.nextInt();	
}
while(!IsEmpty(checkerboard,x,y));
  checkerboard[x][y] = 1;	
  Show(checkerboard);
  if(!Win(checkerboard)) {
  	break;	
}			
do {	
System.out.println("请输入白方落子位置例如(4 3):");
x = input.nextInt();	
y = input.nextInt();	
}
while(!IsEmpty(checkerboard,x,y)); 
checkerboard[x][y] = 2;
Show(checkerboard);	
if(!Win(checkerboard)) {			
	break;		
  }		
 }	
}	
//显示棋盘	
public static void Show(int[][] checkerboard) {	
 for(int i=0;i<16;i++) {
  for(int j=0;j<16; j++) {		 
   if((i==0 && j>9) || (j==0 && i>9)) {
 System.out.print(checkerboard[i][j]+"");		
    }else {							    
 System.out.print(checkerboard[i][j]+"  ");			
 		}	
}				
System.out.println();	
 }	
}	
//判断黑白双方是否获胜//四种情况横竖左斜右斜	
public static boolean Win(int[][] checkerboard) {
for(int i=1; i<16; i++) {	
 for(int j=1;j<16;j++) {
  if(checkerboard[i][j]==1){
  if((checkerboard[i][j+1]==1 &&checkerboard[i][j+2]==1 &&  
 checkerboard[i][j+3]==1 && checkerboard[i][j+4]==1) //判断横	 	
  ||(checkerboard[i+1][j]==1 &&checkerboard[i+2][j]==1 &&
   checkerboard[i+3][j]==1 && checkerboard[i+4][j]==1) //判断竖	
  ||(checkerboard[i+1][j+1]==1checkerboard[i+2][j+2]==1 &&
  checkerboard[i+3][j+3]==1 && checkerboard[i+4][j+4]==1)// 判断\斜;				
 ||(checkerboard[i-1][j+1]==1 &&checkerboard[i-2][j+2]==1 &&
 checkerboard[i-3][j+3]==1 && checkerboard[i-4][j+4]==1)){ // 判断/斜;	
 System.out.println("黑子获胜");
  return false;		
}	
  }else if(checkerboard[i][j]==2){
	   if((checkerboard[i][j+1]==2&&checkerboard[i][j+2]==2 &&					    
  checkerboard[i][j+3]==2 && checkerboard[i][j+4]==2) ||
 (checkerboard[i+1][j]==2 && checkerboard[i+2][j]==2 &&
 checkerboard[i+3][j]==2 && checkerboard[i+4][j]==2) ||
  (checkerboard[i+1][j+1]==2 && checkerboard[i+2][j+2]==2 && 
checkerboard[i+3][j+3]==2&&checkerboard[i+4][j+4]==2||
(checkerboard[i-1][j+1]==1 && checkerboard[i-2][j+2]==1 &&
checkerboard[i-3][j+3]==1 && checkerboard[i-4][j+4]==1)){
System.out.println("白子获胜");
	return false;		
     }				
   }		
 }	
}			
return true;	
}
//判断此位置是否已有棋子		
public static boolean IsEmpty(int[][]checkerboard, int x, int y) {
if(checkerboard[x][y]==0) {	
return true;		
}	
System.out.println("此位置已有棋子,请重新输入");
return false;	
 }
}