java-3天-学习笔记

Java笔记

11-16笔记

流程控制 spring boot spring cloud +SSM

  1. continue中断循环,本次循环立即退出,直接执行下一个循环。
  2. break;整个循环结束。跳出当前循环。当前循环结束,进如之后代码的。
  3. continue后可以跟着变量名称,可以跳转到指定循环位置,如下图所示。
out:for(int i=1;i<100;i++){
    //声明变量
}

continue out;//跳转固定位置变量名称。


题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,

小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

从第三个月开始前面两月之和等于第三个月

第一个月等于A。第二个月等于B,第三个月C=A+B

兔子的规律为数列

1,1,2,3,5,8,13,21…

设第一个月A,第二个月B。第三个月C,前两个月的和等于第三个月

如下:

public class Rabbit {

	public static void main(String[] args) {
		while(true) {
			int a=0;
			int b=0;
			int c=1;
		System.out.println("請輸入兔子月份");
		Scanner scan=new Scanner(System.in);
		int month=scan.nextInt();
		if(month<=0) {
			System.out.println("月份输入错误");
		}else{
			for(int i=2;i<=month;i++) {
			a=b;
			b=c;
			c=a+b;
			}
		System.out.println("第 "+month+"个月"+"有 "+c*2+"只兔子");
		}
		}
	}
}
 

一个数如果恰好等于它的因子之和,这个数就称为"完数"。
  • 例如6=1+2+3。编程找出1000以内的所有完数。

  • 因子:除去这个数本身的其它约数。

     public class day01 {
      	public static void main(String[] args) {	
      		for(int i=1;i<1000;i++) {
      		int c=0;
      		for(int y=1;y<i;y++) {
      			if(i % y ==0) {
      				c+=y;
      			}
      			
      		}
      		if(i==c) {
      		System.out.println(i);
      
            }
      	}
      }
       
    
例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

 public class ShuixianHua {
  
  	public static void main(String[] args) {
  		for(int sum=100;sum<1000;sum++) {
             int bai=sum/100;
             int shi=sum/10%10;
             int ge=sum%10;
  	if(Math.pow(bai, 3)+Math.pow(shi, 3)+Math.pow(ge, 3)==sum) {
  		System.out.println("水仙花数是"+sum);
  	}
  		}
      }
  
  }
题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

1.首先通过Scanner获取用户的值。然后再进行操作。

2.获取到值进行去余判断,


import java.util.Scanner;

public class Mathfenjie {
	 static int n,k = 2;

	    public static void main(String[] args) {
	        System.out.print("请输入一个大于2的正整数:");
	        Scanner scanner = new Scanner(System.in);
	        int n = scanner.nextInt();
	        System.out.print(n+"=" );
	        while(n!=k) {
	        	if(n % k == 0) {
	        		n = n/k;
	        		System.out.print(k+"*");
	        	}
	        	else {
	        		k++;
				}
	        }
	        System.out.print(n);
	    }
	}
题目:利用条件运算符的嵌套来完成此题:

学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1.程序分析:(a> b)?a:b这是条件运算符的基本例子。

public class studentScore {

	public static void main(String[] args) {
		while(true) {
		Scanner scan=new Scanner(System.in);
		System.out.println("请输入成绩");
		//键盘获取值
		int sum=scan.nextInt();
		//条件运算符运算,
		 String str=((sum>=90)?"A":(sum>=60)?"B":"C");
		System.out.println("分数是"+sum+"等级是"+str);
		}
	}

}

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 x

1.程序分析:利用辗除法


题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

1.程序分析:利用while语句,条件为输入的字符不为 '\n '.

11-17笔记

  • subString 截取字符串,用String接受

  • subString(0,1);从指定位置开始截取字符串,参数1:表示指定开始位置,参数2:,表示指定结束位置。

  • subSring (1); 单参数表示此参数的开始位置,截取到最后。

  • eg:

         String name= ="abcdefg";
         String res=name.substring(1,3);
            System.out.println(res);
    
    

    结果是:bc .

    substring.last

数组

1.数组定义

int[] a=new int[5];//动态初始化
int[] a=new int{1001,1992,1003};//静态初始化

2.数组本身是引用数据类型,则他的默认值是null,数组元素可以是基本数据类型。创建数组会在内存中开辟出一段连续的空间。

3.元素下标:从0开始。

数组元素是整形,默认值是0;

数组元素是浮点型,默认值是0.0;

数组元素是char型,默认值是ascll码0;

数组元素是布尔型,默认值是false,也是0;

数组元素是引用数据类型,默认值是null;

11-18笔记

数组‘

int[]x,y[];
//是由int[]x;+int[]y[];组成
//其中X为int型一维数组,y是int型二维数组。

1

1.数据结构处理的是数据与数据之间的逻辑关系:集合、一对一、一对多,多对多。

2、数据的存储结构

线性表:顺序表(数组)、链表、栈、队列

树形结构:二叉树

图形结构:

算法:

Java事务、 银行案例。

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

1.程序分析:利用辗除法。

public static void main(String[] args) {
		 Scanner scan = new Scanner(System.in);
		 System.out.println("请输入第一个正整数");
	        int n = scan.nextInt();
	        System.out.println("请输入第二个正整数");
	        int m = scan.nextInt();
	        if(n==m) {
	        	System.out.println("换个数。相同的数没有意思");
	        	
	        }else {
	       int temp;//三方量
	       int r=0; //余数
	       int bshu=m*n;
	       if(n<m) {
	           temp = n; 
	           n=m;
	           m=temp;    
	       } 
	       r=n%m;
	       while (r!=0)
	       {
	   	       n=m;
	           m=r;
	           r=n%m;
	       }
	    
	       bshu/=m;
	       System.out.println("最大公约数为"+m);
	       System.out.println("最小公倍数为"+bshu);
	        }

11-19笔记

九九乘法表

外层循环控制列数,内层循环控制行数。

public static void main(String[] args) {
	for(int i=1;i<10;i++) {
		for(int j=1;j<=i;j++) {
			System.out.print(j+"X"+i+"="+i*j+" ");
		}
		System.out.println();
	}

	}

}
★杨辉三角。
/*用二维数组打印一个10行杨辉三角
 * 
 * 
 */
public class yanghuiTest {
		public static void main(String[] args) {
			int [][]yanghui =new int[10][];
			for(int i=0;i<yanghui.length;i++) {
			yanghui[i]=new int[i+1];
			yanghui[i][0]=1;
			yanghui[i][i]=1;
				if(i>1) {
					for(int j=1;j< yanghui[i].length-1;j++) {
						yanghui[i][j]=yanghui[i-1][j-1]+yanghui[i-1][j];
					}
				
				}
			}
			for(int i=0;i<yanghui.length;i++) {
				for(int j=0;j<yanghui[i].length;j++) {
					System.out.print(yanghui[i][j]+"  ");
				}
				System.out.println();
			}
		}
}

★回形数解法

★数组中面试常考题

★1.数组元素的赋值、(杨辉三角、回形数);

★求数组中元素最大值、最小值、平均数、总和等。

3.数组的复制、反转、★查找(线性查找、★二分法查找);

★4.数组元素的排序算法。

随机数的产生

数组生成随机数,采用math.random(),方法 此方法可以产生0.0-1.0之间的随机数,若想要10-99之间的随机数。

Math.random:[0.0,1);

Math.random* 90: [0.0,90.0)

(Math.random * 90 + 10):[10,99]

公式:获取[a,b]范围的随机数:(int)(Math.random( )* (b-a+ 1))+a

★求数组中元素最大值、最小值、平均数、总和等。
求数组中元素最大值、最小值、平均数、总和等。
    public class ArrayTest {

	public static void main(String[] args) {
			int[]num=new int[10];
			for(int i=0;i<num.length;i++) {
				num[i]=(int)(Math.random()*(99-10 + 1) + 10);
				
			}
			for(int i=0;i<num.length;i++) {
				System.out.print(num[i]+"  ");
			}
			System.out.println();
			//最大值获取
			int maxvalue=0;
			for(int i=0;i<num.length;i++){
				if(maxvalue<num[i]){
				maxvalue=num[i];
				}	
			}
			System.out.println("最大值是"+maxvalue);
			//最小值获取
			int minvalue=num[0];
			for(int i =1;i<num.length;i++) {
				if(minvalue>num[i]) {
					minvalue=num[i];
				}
			}
			System.out.println("最小值是"+minvalue);
			//数组元素的总和
			int sum=0;
			for(int i=0;i<num.length;i++) {
					sum +=num[i];
			}
			System.out.println("总和是"+sum);
			//平均数
			double avgvalue=(double)sum/num.length;
			
			System.out.println("平均数是"+avgvalue);
	}

}

数组插入排序。
数组的复制。P161,未看。

数组进行复制,array1=array2 ;

改变array2的值,array1也会改变。详情P163。

array1和array2地址值相同,都指向了堆空间当中的唯一的一个数组实体。

冒泡排序

冒泡排序算法的原理如下: [1]
比较相邻的元素。如果第一个比第二个大,就交换他们两个。 [1]
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 [1]
针对所有的元素重复以上的步骤,除了最后一个。 [1]
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 [1]

/*
冒泡排序
 */
public class BubbleSort {
    public static void main(String[] args) {
        int[]num=new int[]{-30,30,-31,-50,0,889,43,23,432};
        //外层循环控制轮数。一共有9个数据,需要循环八轮才能完成数据查找。
        for (int i=0;i<num.length-1;i++){
                //内层循环控制每次轮数开始。
                for (int j=0;j<num.length-1-i;j++){
                    if(num[j]>num[j+1]) {
                        //交换值。
                        int temp = num[j];
                        num[j] = num[j + 1];
                        num[j + 1] = temp;
                    }
                }
        }
        for (int i=0;i<num.length;i++){
            System.out.print(num[i]+" ");
        }
    }
}

快速排序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值