java--基础语法学习应用实例
Java笔记
11-16笔记
流程控制 spring boot spring cloud +SSM
- continue中断循环,本次循环立即退出,直接执行下一个循环。
- break;整个循环结束。跳出当前循环。当前循环结束,进如之后代码的。
- 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]+" ");
}
}
}
快速排序
本文地址:https://blog.csdn.net/weixin_44497661/article/details/109843685