java小练习

打印99乘法表

因为有9行9列,所有要用两个for循环

        int m;
        
        for (int i = 1; i < 10; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(i+"*"+j+"="+i*j+"\t");
            }
            
            System.out.println();
        }

水仙花数

三位数中每位数字的立方 和等于该数字

要取出每位数字,算出3个数字的立方和,然后判断是否相等

		for (int i = 100; i < 1000; i++) {
			int n=i%10;
			int m=i/10%10;
			int k=i/100;
			if (m*m*m+n*n*n+k*k*k==i) {
				System.out.println(i);
			}
		}

 输入一个数字 判断该数字是不是回文数(利用数组完成)

首先确定输入数字是几位数 将每位数字取出输入数组

利用 判断首尾一次是否相等 来确定该数字是否是回文数

int m=scanner.nextInt();
		int n=m;
		int count=0;
		while (n>0) {
			n/=10;
			count++;
            }   
        System.out.println(count);                                         
        int [] arr = new int[count];
	   for (int i = 0; i < count; i++) {
		      
		   
		     int p=m%10;
		      m=m/10;
		      System.out.print(p); 
		      arr[i]=p;
	     }
	   for (int i = 0,j=arr.length-1; i < j; i++,j--) {
		   if(arr[i]!=arr[j]){
			   System.out.println("不是回文数");
			   return;
		   }
	   }
	   System.out.println("是回文数");

  输入一个数字,在已知数组内查找是否有该数字;如果存在,则输出数字下标;如果不存在,则输出-1.(利用二分法查找

int[] arr = {0,1,2,3,4,5,6,7,8,9};
		Scanner in = new Scanner(System.in);
		System.out.print("请输入一个数字:");
		int num = in.nextInt();

		
		
		int start = 0; // 默认起始坐标
		int end = arr.length-1;  // 默认结尾坐标
		int index = -1;  // 找不到默认index为-1
		while(start<=end){
			int middle = (start+end)/2; // 计算中间下标
			if(num == arr[middle]){
				index = middle;
				break;
			}
			
			if(num > arr[middle]){
				start = middle + 1;
			}
			
			if(num < arr[middle]){
				end = middle - 1;
			}
		}
		System.out.println(index);

  

 

posted @ 2018-03-25 20:29  wyu1258  阅读(106)  评论(0编辑  收藏  举报