java 简单的练习题章节

最近对java的练习做了一些,然后进行了整理,留下以后可以看看,现在的代码肯定比较臃肿,以后望能做出修改。。

// 猜一个1~1000的数字,有十次机会,可以继续游戏。
public class Cai {
	static int num = (int) (Math.random() * 1000);
	static int n=0; //次数
	static String y;
	static Scanner scan=new Scanner(System.in);
	public static void Secret(){
		
		System.out.println("请输入一个1~1000的值:");
		int x;
		do{
			x=scan.nextInt();
			while(x<1 ||x>1000)
			{
				System.out.println("输入有误,请重新输入!");
				x=scan.nextInt();
			}
		  if(num<x){
			  System.out.println("大了点,再猜!");
			  n++;
		  }else if(num>x){
			  System.out.println("小了点,再猜!");
			  n++;
		  }else{
			  System.out.println("您猜对了!");
		       n++;
			  break;
		  }
		}while(n<=9);
		System.out.println("这个数字是"+num);
		System.out.println("你猜的次数是"+n);
		 System.out.println("猜数字游戏结束,是否继续?(y/n)");
		y=scan.next();
	}
	public static void main(String[] args) {
		 Secret();
		do{
			    n=0;
				Secret();
			}
		while(y==y);	
		System.out.println("再见");
	}
}
//输入一个四位数然后将其逆输出
import java.util.Scanner;
public class Ni {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.println("请输入一个4位数:");
       int x=0;
       x=scan.nextInt();
       
	int a,b,c,d;
       a=x/1000;
       b=(x-1000*a)/100;
       c=(x-1000*a)%100/10;
       d=(x-1000*a)%10;
       int ar[]=new int[4];
       ar[0]=a;
       ar[1]=b;
       ar[2]=c;
       ar[3]=d;
       int i,j,t,k;
       for ( i = 0; i < 4; i++) {
            k = i;
           for ( j = i + 1; j < 4; j++) {
               if (ar[j] < ar[k]) {
                   k = j;
               }
           }
           if (k > i) {
               int tmp = ar[i];
               ar[i] = ar[k];
               ar[k] = tmp;
           }
       }


  	 for(k=0;k<=3;k++){
  	System.out.print(ar[k]);
  	}
	}         
      
	}
//求两个数的最小公约数和最小公倍数。
import java.util.Scanner;

public class GongYue {//辗转相除法求公约数
	
	public static int gongyue(int a,int b){
		 int gy=0;
		 if(a<b)
		 {  
			 	a=a+b;
			 	b=a-b;
				a=a-b;
			}
		if(a%b==0)
		{
			gy= b;
			}
			while(a % b>0)
			{
			a=a%b;
			if(a<b)
			{
				a=a+b;
      			b=a-b;
				a=a-b;
			}
			if(a%b==0)
			{
			gy = b;
			}
		}
		return gy;
			 	}

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入两个数字:");
		 int a,b;
		 a=scan.nextInt();
		 b=scan.nextInt();
		 int n=gongyue(a,b);
		 System.out.println("a和b的最大公约数为:"+n);
		 System.out.println("a和b的最小公倍数为:"+(a*b)/n);
         	 
}
}
//求100~200的素数
public class Sushu {
     
	public static void main(String[] args) {
		System.out.println("100~200素数有:");
		int j = 0;
		boolean z=false;
		 for(j=100;j<=200;j++){
		    int k=(int)Math.sqrt(j);
			int i=0; 
		    for(i=2;i<=k;++i)
		 {
		   if(j%i==0 )
		      break;
		 }
		 if(i>k)
			  System.out.println(j);
		 }
		
		
	}

         
	}
//定义一个初始值是2的一维整型数组,用户输入一个值,将该值插入到数组恰当的位置(该数组是按照从小到大进行排序的)。
public static int[]Insert(int str[],int x){
		if(str.length==1){
			int ar[]=new int[str.length+1];
			if(str[0]>x){
				ar[0]=x;
				ar[1]=str[0];
				return ar;
			}else{
				ar[0]=str[0];
				ar[1]=x;
				return ar;
			}
		}else{
		int i,j,k = 0;
		for ( i = 0; i <str.length; i++) {
            k = i;
           for ( j = i + 1; j <str.length; j++) {
               if (str[j] < str[k]) {
                   k = j;
               }
           }
           if (k > i) {
               int tmp = str[i];
               str[i] = str[k];
               str[k] = tmp;
           }
       }
		int []ar=new int[str.length+1];
		for(i=0;i<str.length;i++){
			if(str[i]>x){
				k=i;
				break;
			}
		}
		for(j=0;j<k;j++){
			ar[j]=str[j];
		}
		ar[k]=x;
		for(j=k;j<ar.length-1;j++){
			ar[j+1]=str[j];
		}
		return ar;
	 }
	}
  public static void main(String[] args) {
	int[] str=new int[]{2};
	Scanner scan=new Scanner(System.in);
	System.out.println("请输入需要插入数组的数字:");
	int x=0;
	boolean b=true;
	while(b){
		try{
		x=scan.nextInt();//如果输入的不是数字,则会抛出异常,进去catch语句块
		b=false;
		}
		catch(Exception e){
		System.out.println("输入错误,请重新输入:");
		scan.nextLine();        //需要读入回车符,确保循环正常实行
		}
	}
         int[]arr=Insert(str,x);
         System.out.println(Arrays.toString(arr));
     }
}

//定义一个整型数组arr={1,3,4,2,6,2,6,2,8,2,6};里面还有重复项,将该数组中重复出现的整数只保留一个,其余的删除。


  public static int[] Move(int []str){
    	 int len=str.length;
    	    for(int i=0;i<len;i++){
    	        	for(int j=i+1;j<len;j++){
    	            if(str[j]==str[i]){ 
    	                for(int k=j+1;k<len;k++){
    	                    str[k-1]=str[k]; 
    	                len--;
    	                }
    	            } 
    	    }
        }
    	    str=Arrays.copyOf(str, len);
    	       return str; 
    	       
     }

	public static void main(String[] args) {
		int[]str=new int[]{1,3,4,2,6,2,6,2,8,2,6};
		int[]arr=Move(str);
		System.out.println(Arrays.toString(arr));
		
	}
public static boolean find(int[][] str, int number) {     //查找数组中的数
	        if (str == null || str.length < 1 || str[0].length < 1) {  
	            return false;  
	        }  
	        int rows = str.length; 
	        int cols = str[1].length; 
	        int row = 0; 
	        int col = cols - 1; 
	        while (row >= 0 && row < rows && col >= 0 && col < cols) {  
	            if (str[row][col] == number) { 
	                return true;  
	            } else if (str[row][col] > number) {   
	                col--;  
	            } else {   
	                row++; 
	            }  
	        }  
	        return false;  
	    }   
	public static void main(String[] args) {
		int[][] matrix = {  
                {1, 2, 3, 4},  
                {2, 3, 4, 5},  
                {3, 4, 5, 6},  
                {4, 5, 6, 7}};  
		 System.out.println(find(matrix, 5)); 		
	}






	public static void printOfNum(int[][]str){ //顺时针打印矩阵
		int x=0;
		int y=0;
		while(x*2<str.length &&y*2<str[0].length){
			  printOfWays(str,x,y);
              x++;
              y++;
		}
	}
	public static void printOfWays(int[][] str,int x,int y){
		int rows=str.length;
			int cols=str[0].length;
			for(int i=y;i<cols-y-1;i++){
				System.out.print(str[x][i]+" ");
			}
			if(rows-x-1>x){  //rows-x-1是最后一行的行号,意思为大于1才输出右边
				for(int i=x+1;i<=rows-x-1;i++){
					System.out.print(str[i][cols-y-1]+" ");
				}
			}
			if(rows-x-1>x && cols-1-y>y){  //cols-1-y是最右边的的列,只有高度和宽度都大于1才输出下边
				for(int i=cols-y-2;i>=y;i--){
					System.out.print(str[rows-1-x][i]+" ");
				}
			}
			if(cols-1-y>y && rows-1-x>x+1){  //宽度大于1高度大于2才能输出
				for(int i=rows-2-x;i>=x+1;i--){
					System.out.print(str[i][y]+" ");
				}
			}
	}
	public static void main(String[] args) {
		int [][]str=new int[][]{{1,2,3,4},
				                {5,6,7,8},
				                {9,10,11,12},
				                {13,14,15,16}};
		printOfNum(str);
		System.out.println();
	}





	public static void main(String[] args) {   //二维数组打印菱形
		Scanner scan=new Scanner(System.in);
		System.out.println("请输入菱形的高度:");
		int h=scan.nextInt();
		char[][]str= new char[3*h][3*h];
        for(int i=0;i<h;i++){
        	for(int j=0;j<=h-i-1;j++){
        		str[i][j]=' ';
        	}for(int k=0;k<2*i+1;k++){
        		str[i][h-i+k]='*';
        	}
        	System.out.println();
        }
       for(int i=0;i<h;i++){
    	   for(int j=0;j<=i+1;j++){
       		str[h+i][j]=' ';
       	}for(int k=0;k<2*(h-i-2)+1;k++){
       		str[h+i][i+2+k]='*';
       	}
       }
         for(int i=0;i<str.length;i++){
        	 for(int j=0;j<str[i].length;j++){
        		 System.out.print(str[i][j]);
        	 }
        	 System.out.println();
         }
       }
        }
       
//循环报数游戏,有n个人,每一个人编号从1开始,依次编号到n。从1到3报数,报3的退出游戏,得出最后获胜人的编号
函数原型:

public static void CyclicGame(int num){
	boolean[]str=new boolean[num];
	for(int i=0;i<num;i++){
		str[i]=true;
	}
	int index = 0; 
	int count = 0;
	int n=num;
	while(n > 1)
	{
	if(str[index] == true)
	{
	count++;
	if(count == 3) //当count等于3时,就淘汰一个;
	{
	str[index] = false;
	n--;        //当有一个被淘汰时,n--;
	count = 0;
	} 
	}
	index++;       //当从0循环到n时,重新置index为0;
	if(index == num)
	{
	index = 0;
	}
	}
	for(int i=0; i<num; i++)  
	{
	if(str[i] == true){
	  System.out.println(i+1);;
	}
	}
	}
	 
  public static void main(String[] args) {
	  Scanner scan=new Scanner(System.in);
	  System.out.println("请输入要参加游戏的人数:");
	int n=scan.nextInt();
	CyclicGame(n);
	
}
//自定义MyArrayList类
public class MyArrayList {
	static int[] arr;
	static int size=0;//有效数据个数
	public static  void InitMyArrayList(){
		arr=new int[1];
		size=0;
	}
	public static void add(int num){
		int len=arr.length;
		for(int i=0;i<len;i++){
			if(arr[i]==0){
				arr[i]=num;
				size++;
				break;
			}
			if(arr[len-1]!=0 && i==len-1){
				arr=Arrays.copyOf(arr, len+1);
				arr[len]=num;
				size++;
			}
		}
	}
	/*
	 * 删除尾巴
	 */
	public static void delTail(){
		int len=arr.length;
		if(arr[len-1]!=0){
			size--;	
		}
		arr=Arrays.copyOf(arr, len-1);
	}
	public static void delHead(){
		for(int i=0;i<arr.length-1;i++){
			arr[i]=arr[i+1];
		}
		arr=Arrays.copyOf(arr, arr.length-1);
		size--;
	}
	/*
	 * 查找一个数并返回它的下标
	 */
	public static int search(int num){
		for(int i=0;i<arr.length;i++){
			if(arr[i]==num){
				return i;
			}
		}
		return -1;
	}
	/*
	 * 删除数字number
	 */
	public static boolean del(int number){
		int n=search(number);
		if(n==-1){
			return false;
		}
		for(int i=n;i<arr.length-1;i++){
			arr[n]=arr[n+1];
		}
		arr=Arrays.copyOf(arr,arr.length-1);
		size--;
		return true;
	}
	/*
	 * 当前src->aim
	 */
	public static boolean change(int src,int aim){
		int n=search(src);
		if(n==-1){
			return false;
		}
		arr[n]=aim;
		return true;
	}
	public static void show(){
          System.out.println(Arrays.toString(arr));	
		  System.out.println("有效数字个数为:"+size);
	}
	public static void main(String[] args) {
		InitMyArrayList();
		add(9);
		add(10);
		del(9);
		add(9);
		change(9,8);
		show();
	}
	}

以上就是近期的练习了,望自己继续加油。

猜你喜欢

转载自blog.csdn.net/qq_38361756/article/details/82153715