2、java语法之循环、数组与方法(找工作版)

news2024/11/24 9:23:58

写在前面:整个系列文章是自己学习慕课相关视频,进行的一个总结。文章只是为了记录学习课程的整个过程,方便以后查漏补缺,找到对应章节。

文章目录

    • 一、Java循环结构
      • 1、while循环
      • 2、do-while循环
      • 3、for循环
      • 4、嵌套循环
      • 5、break语句
      • 6、continue语句
      • 7、多种数据类型接收方法总结
    • 二、Java一维数组
      • 1、数组的概念
      • 2、一些数组的案例
      • 3、增强型for循环
      • 4、冒泡排序
    • 三、Java二维数组
    • 四、Java方法
      • 1、方法简介
      • 2、无参无返回值方法
      • 3、无参有返回值方法
      • 4、有参无返回值方法
      • 5、有参有返回值的方法
      • 6、方法重载
      • 7、数据类型的传值
      • 8、可变参数列表
    • 五、综合案例:数组移位与统计

一、Java循环结构

while循环、do-while循环、for循环

1、while循环

  • 循环输出26个英文字母,分两行输出
public class CharDemo {

	public static void main(String[] args) {
		// 循环输出26个英文字母,分两行输出
		char ch='a';
		int count=1;//控制换行
		while(ch<='z') {
			System.out.print(ch+" ");
			if(count%13==0) {
				System.out.println();
			}
			ch++;
			count++;
		}
	}
}
输出:
a b c d e f g h i j k l m 
n o p q r s t u v w x y z 

2、do-while循环

注意事项:
一、do-while循环至少执行一次
二、循环条件后的分号不能丢

  • 猜字游戏。要求猜一个个于1到10之间的数字。然后将猜测的值与实际值进行比较,并给出提示,以便能更接近实际值,直到猜中为止。
import java.util.Scanner;

public class GuessDemo {

	public static void main(String[] args) {
		/*
		猜字游戏。要求猜一个个于1到10之间的数字。然后将猜测的
		值与实际值进行比较,并给出提示,以便能更接近实际值,直
		到猜中为止。
		*/
		//Math.random()[0,1)之间的随机数
		int number=(int)(Math.random()*10+1);//设置要猜的数
		System.out.println("number="+number);
		int guess;
		System.out.println("猜一个介于1~10之间的数");
		do {
			System.out.println("请输入您猜测的数:");
			Scanner sc=new Scanner(System.in);
			guess = sc.nextInt();
			if(guess>number) {
				System.out.println("太大!");
			}else if(guess<number){
				System.out.println("太小!");
			}
		}while(number!=guess);
		System.out.println("您猜中了!答案为"+number);

	}

}

3、for循环

在这里插入图片描述

  • 编写一个程序,求出200到300之间的数,且满足条件: 它们三个数字之积为42,三个数字之和为12.
public class FlowDemo1 {

	public static void main(String[] args) {
		/*
		编写一个程序,求出200到300之间的数,且满足条
		件: 它们三个数字之积为42,三个数字之和为12.
		*/
		int ge,shi,bai;
		for(int i=200;i<=300;i++) {
			bai=i/100;
			shi=i/10%10;
			ge=i%10;
			
			if(ge*shi*bai==42&&ge+shi+bai==12) {
				System.out.println(i);
			}
		}
	}
}
输出:
237
273

4、嵌套循环

  • 使用嵌套while循环输出10行10列的星号
public class StarDemo1 {

	public static void main(String[] args) {
		int m=1;//外重循环的循环变量
		int n=1;//内重循环的循环变量
		System.out.println("输出4行4列的星号:");
		//外重循环控制输出几行
		while(m<=4) {
			//内重循环控制每行输出几个星号
			n=1;
			while(n<=4) {
				System.out.print("*");
				n++;
			}
			System.out.println();
			m++;
		}
	}
}
输出:
输出44列的星号:
****
****
****
****

5、break语句

  • break语句可以结束当前循环的执行
  • 执行完break语句后,循环体中位于break语句后面的语句就不会被执行
  • 在多重循环中,break语句只向外跳一层
    在这里插入图片描述

6、continue语句

  • continue语句只能用在循环里
  • continue语句可以结束当前循环的执行,但是要继续下一次循环的执行
    在这里插入图片描述

7、多种数据类型接收方法总结

在这里插入图片描述
Java并没有提供直接接收字符数据的方法,而是先接收字符串数据,然后进行转换。如下代码所示:先从键盘接收字符串类型数据,存储到字符串类型的变量str中,然后通过字符串的charAt()方法获得输入的第一个字符。

//从键盘接收char类型数据
System.out.println("请输入数据:");
Scanner sc=new Scanner(System.in);
String str=sc.next();
char ch=str.charAt(0);
System.out.println(ch);
输出:
请输入数据:
abcd
a

二、Java一维数组

1、数组的概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 数组在内存中的存储:数组会被分配连续的内存空间,对于整型数组默认值都为0,假设数组名为a,它指向数组的第一个元素,数组本身其实是对象。
    在这里插入图片描述
    数组长度:arr.length

2、一些数组的案例

public class ArrayDemo {

	public static void main(String[] args) {
		// 声明一个整型数组
		int[] intArray;
		//声明一个字符串类型的数组
		String strArray[];
		//创建数组
		intArray = new int[5];
		strArray = new String[10];
		//声明数组的同时进行创建
		float[] floatArray=new float[4];
		
		//初始化数组
		char[] ch= {'a','b','c','d'};
		System.out.println("ch数组的长度为:"+ch.length);
		System.out.println("intArray数组的第2个元素为:"+intArray[1]);
		System.out.println("strArray数组的第5个元素为:"+strArray[4]);
		System.out.println("floatArray数组的第最后一个元素为:"+floatArray[floatArray.length-1]);
		
		//循环为整型数组赋值
		for(int i=0;i<5;i++) {
			intArray[i]=i+1;
		}
		//循环输出整型数组中的元素
		System.out.println("整型数组intArray的元素为:");
		for(int i=0;i<5;i++) {
			System.out.print(intArray[i]+"  ");
		}
	}
}
输出:
ch数组的长度为:4
intArray数组的第2个元素为:0
strArray数组的第5个元素为:null
floatArray数组的第最后一个元素为:0.0
整型数组intArray的元素为:
1  2  3  4  5  
  • 求数组元素的累加和
import java.util.Scanner;

public class ArrayDemo1 {

	public static void main(String[] args) {
		// 求整型数组的累加和
		//定义整型数组
		int[] a=new int[5];
		Scanner sc=new Scanner(System.in);
		//从键盘接收数据,为数组赋值
		for(int i=0;i<a.length;i++) {
			System.out.println("请输入第"+(i+1)+"个元素:");
			a[i]=sc.nextInt();
		}
		System.out.println("数组元素内容为:");
		for(int i=0;i<a.length;i++) {
			System.out.print(a[i]+"  ");
		}
		//求数组元素的累加和
		int sum=0;
		for(int i=0;i<a.length;i++) {
			sum +=a[i];
		}
		System.out.println();
		System.out.println("数组元素的累加和为:"+sum);
	}
}
输出:
请输入第1个元素:
1
请输入第2个元素:
5
请输入第3个元素:
6
请输入第4个元素:
8
请输入第5个元素:
9
数组元素内容为:
1  5  6  8  9  
数组元素的累加和为:29

3、增强型for循环

在这里插入图片描述

  • 增强型for循环与普通for循环的区别增强型for循环与普通for循环的区别:
    1、增强型for循环书写简洁,遍历数组时不需要下标,主要用于数组或集合的遍历,数组或集合遍历完毕时循环会结束执行。
    2、普通for循环需要三个条件,包括循环变量、循环结束条件和循环变量的变化。在进行数组遍历时,如果需要使用下标,可以使用普通for循环。比如:从键盘接收数组元索时,提示输入第几个元素。如果使用增强型for循环需要额外定义变量,

4、冒泡排序

在这里插入图片描述在这里插入图片描述

public class SortDemo {

	public static void main(String[] args) {
		// 冒泡排序
		int[] a= {34,53,12,32,56,17};
		System.out.println("排序前的数组元素为:");
		for(int n:a) {
			System.out.print(n+"  ");
		}
		System.out.println();
		int temp;
		for(int i=0;i<a.length-1;i++) {
			//内循环控制每趟排序
			for(int j=0;j<a.length-i-1;j++) {
				if(a[j]>a[j+1]) {
					temp = a[j];
					a[j] = a[j+1];
					a[j+1] = temp;
				}
			}
		}
		System.out.println("从小到大排序后的数组元素为:");
		for(int n:a) {
			System.out.print(n+"  ");
		}
	}
}
输出:
排序前的数组元素为:
34  53  12  32  56  17  
从小到大排序后的数组元素为:
12  17  32  34  53  56  

三、Java二维数组

public class ArrayDemo5 {

	public static void main(String[] args) {
		// 二维数组的声明3种形式
		int[][] intArray;
		float floatArray[][];
		double[] doubleArray[];
		
		//创建一个3行3列int型二维数组
		intArray=new int[3][3];
		//为第2行第3个元素赋值
		intArray[1][2]=9;
		//声明数组的同时进行创建
		char[][] ch=new char[3][5];
		//float类型数组,只指定行数
		floatArray=new float[3][];
		//每行相当于一个一维数组,需要创建
		floatArray[0] =new float[3];
		floatArray[1] =new float[4];
		floatArray[2] =new float[5];
		
		// 二维数组的初始化
		int[][] num= {{1,2,3},{4,5,6},{7,8,9}};
		System.out.println("num数组的行数:"+num.length);
		System.out.println("num数组的列数:"+num[0].length);
		
		int[][] num1={{1,2,3,4},{6},{8,9}};
		//循环输出二维数组的内容
		for(int i=0;i<num1.length;i++) {
			for(int j=0;j<num1[i].length;j++) {
				System.out.print(num1[i][j]+"  ");
			}
			System.out.println();
		}
	}
}
输出:
num数组的行数:3
num数组的列数:3
1  2  3  4  
6  
8  9  

注意
1、数组是引用数据类型
2、创建数组时,会开辟连续的内存空间
3、数组长度使用length属性获取
4、数组元素的下标从0开始
5、数组下标越界问题

  • 在一个二维数组中存放了三名学生的语文和数学的成绩,从键盘输入三名学生的成绩存储到二维数组中,分别求语文和数学的总成绩及平均分并输出。
import java.util.Scanner;

public class ArrayDemo4 {

	public static void main(String[] args) {
		// 定义一个三行两列的整型二维数组intArray
		int[][] intArray=new int[3][2];
		//从键盘输入学生成绩
		Scanner sc=new Scanner(System.in);
		for(int i=0;i<intArray.length;i++) {
			for(int j=0;j<intArray[i].length;j++) {
				if(j==0) {
					System.out.println("请输入第"+(i+1)+"个学生的语文成绩:");
					intArray[i][j]=sc.nextInt();
				}else {
					System.out.println("请输入第"+(i+1)+"个学生的数学成绩:");
					intArray[i][j]=sc.nextInt();
				}
			}
		}
		//求语文的总成绩和平均分
		int sum1=0;
		float avg1;
		for(int i=0;i<intArray.length;i++) {
			sum1 += intArray[i][0];
		}
		avg1=sum1/intArray.length;
		
		//求数学的总成绩和平均分
		int sum2=0;
		float avg2;
		for(int i=0;i<intArray.length;i++) {
			sum2 += intArray[i][1];
		}
		avg2=sum2/intArray.length;
		
		System.out.println("语文的总成绩为:"+sum1);
		System.out.println("语文的平均分为:"+avg1);
		System.out.println("数学的总成绩为:"+sum2);
		System.out.println("数学的平均分为:"+avg2);
	}

}
输出:
请输入第1个学生的语文成绩:
78
请输入第1个学生的数学成绩:
98
请输入第2个学生的语文成绩:
95
请输入第2个学生的数学成绩:
100
请输入第3个学生的语文成绩:
75
请输入第3个学生的数学成绩:
80
语文的总成绩为:248
语文的平均分为:82.0
数学的总成绩为:278
数学的平均分为:92.0

四、Java方法

1、方法简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、无参无返回值方法

注意:方法在类的内部定义

public class MethodDemo {
	//打印输出星号的方法
	public void printStar() {
		System.out.println("*******************************");
	}

	public static void main(String[] args) {
		// 创建一个类对象
		MethodDemo myMethodDemo=new MethodDemo();
		//使用对象名.方法名()去调用方法
		myMethodDemo.printStar();
		System.out.println("欢迎来到Java的世界!");
		myMethodDemo.printStar();
	}
}
输出:
*******************************
欢迎来到Java的世界!
*******************************

3、无参有返回值方法

public class Rectangle {
	//求长方形面积的方法
	public int area(){
		int length=10;
		int width=5;
		int getArea=length*width;
		return getArea;//返回语句
		
	}
	public static void main(String[] args) {
		Rectangle rc=new Rectangle();
		System.out.print("长方形的面积为:"+rc.area());
	}
}
输出:
长方形的面积为:50

4、有参无返回值方法

public class MaxDemo {
	// 求最大值的方法
	public void max(float a,float b) {
		float max;
		if(a>b) {
			max=a;
		}else {
			max=b;
		}
		System.out.println("两个数"+a+"和"+b+"的最大值为:"+max);
	}
	public static void main(String[] args) {
		MaxDemo mDemo = new MaxDemo();
		int a=5,b=3;
		mDemo.max(a,b);
		float m=5.6f,n=8.9f;
		mDemo.max(m, n);
		mDemo.max(9.8f, 12.8f);
	}

}
输出:
两个数5.03.0的最大值为:5.0
两个数5.68.9的最大值为:8.9
两个数9.812.8的最大值为:12.8

5、有参有返回值的方法

  • 定义一个求n!的方法,然后再求1!+2!+3!+4!+5!
    public int fac(int n)
public class FacDemo {
	// 方法不能嵌套定义
	//求阶乘的方法
	public int fac(int n) {
		int s=1;
		for(int i=1;i<=n;i++) {
			s*=i;
		}
		return s;
	}
	public static void main(String[] args) {
		FacDemo facDemo=new FacDemo();
		int fac=facDemo.fac(3);
		System.out.println("3!="+fac);
		int sum=0;
		for(int i=1;i<=5;i++) {
			fac=facDemo.fac(i);
			sum+=fac;
		}
		System.out.println("1!+2!+3!+4!+5!="+sum);
	}
}
输出:
3!=6
1!+2!+3!+4!+5!=153
  • 例:查找数组元素的值
    public boolean search(int n,int[] arr){}
import java.util.Scanner;

public class ArraySearch {
	//查找数组元素值的方法
	public boolean search(int n,int[] arr) {
		boolean flag=false;//默认是没找到
		for(int i=0;i<arr.length;i++) {
			if(arr[i]==n) {
				flag=true;//找到了
				break;
			}
		}
		return flag;
	}

	public static void main(String[] args) {
		int[] arr1= {10,20,30,40,50,60};
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入要查找的数据:");
		int n1=sc.nextInt();
		ArraySearch as = new ArraySearch();
		boolean flag=as.search(n1, arr1);
		if(flag) {
			System.out.println("找到了");
		}else {
			System.out.println("没找到");
		}
	}
}
输出:
请输入要查找的数据:
35
没找到

6、方法重载

方法名相同,参数列表不同
在这里插入图片描述

public class MathDemo {
	//求两个int类型数的和
	public int plus(int m,int n) {
		return m+n;
	}
	//求两个double类型数的和
	public double plus(double m,double n) {
		return m+n;
	}
	//求数组元素的累加和
	public int plus(int[] arr) {
		int sum=0;
		for(int i=0;i<arr.length;i++) {
			sum=sum+arr[i];
		}
		return sum;
	}

	public static void main(String[] args) {
		int m=5,n=10;
		int[] arr= {1,2,3,4,5,6};
		MathDemo mathDemo=new MathDemo();
		System.out.println("int类型的和:"+mathDemo.plus(m, n));
		System.out.println("double类型的和:"+mathDemo.plus(5.6,7.8));
		System.out.println("数组元素的和:"+mathDemo.plus(arr));
	}
}
输出:
int类型的和:15
double类型的和:13.399999999999999
数组元素的和:21

Java方法重载的总结:
方法名相同,参数列表不同。
参数列表不同包括,参数的个数和类型不同。如果只有参数名不同,不能算作方法重载。如下三个方法是重载方法,它们的参数列表都是不同的。
public void display(){}
public void display(int n){}
public void display(float n){}
如下两个方法不是重载方法,两个方法只是参数名不同,不满足方法重载条件。
public void display(int n){}
public void display(int d){}

7、数据类型的传值

基本数据类型传值时,不会影响主方法中的值;引用数据类型传值时,会影响主方法中的值。

  • 方法传值,只传值,不传地址。因此调用方法后m和n的值不变。
public class ExchangeDemo {
	//交换方法
	public void swap(int a,int b) {
		int temp;
		System.out.println("交换前:a="+a+",b="+b);
		temp=a;a=b;b=temp;
		System.out.println("交换后:a="+a+",b="+b);
	}
	public void swapTest() {
		int m=4,n=5;
		System.out.println("交换前:m="+m+",n="+n);
		swap(m, n);
		System.out.println("交换后:m="+m+",n="+n);
	}
	public static void main(String[] args) {
		ExchangeDemo ed = new ExchangeDemo();
		ed.swapTest();
	}
}
输出:
交换前:m=4,n=5
交换前:a=4,b=5
交换后:a=5,b=4
交换后:m=4,n=5
  • 数组传值时,主方法外和主方法内指向的是同一片内存空间。
public class ArrayDemo {
	//定义一个用于修改某个数组元素值的方法
	public void updateArray(int[] a) {
		a[3]=15;
		System.out.println("数组a的元素为:");
		for(int n:a) {
			System.out.print(n+"  ");
		}
		System.out.println();
	}

	public static void main(String[] args) {
		ArrayDemo ad=new ArrayDemo();
		int[] a1= {1,2,3,4,5};
		System.out.println("方法调用前数组a1的元素为:");
		for(int n:a1) {
			System.out.print(n+"  ");
		}
		System.out.println();
		ad.updateArray(a1);
		System.out.println("方法调用后数组a1的元素为:");
		for(int n:a1) {
			System.out.print(n+"  ");
		}
		System.out.println();
	}
}
输出:
方法调用前数组a1的元素为:
1  2  3  4  5  
数组a的元素为:
1  2  3  15  5  
方法调用后数组a1的元素为:
1  2  3  15  5  

8、可变参数列表

public void sum(int… n){}

public class ArgsDemo {
	//求和
	public void sum(int... n) {
		int sum=0;
		for(int i:n) {
			sum+=i;
		}
		System.out.println("sum="+sum);
	}

	public static void main(String[] args) {
		ArgsDemo ad=new ArgsDemo();
		ad.sum(1);
		ad.sum(1,2);
		ad.sum(1,2,3);
	}
}
输出:
sum=1
sum=3
sum=6
  • 参数列表中如果有两个以上参数,可变参数一定是在最后的。
import javax.print.attribute.IntegerSyntax;

public class ArgsDemo1 {
	//查找
	public void search(int n,int... a) {
		boolean flag=false;
		for(int a1:a) {
			if(a1==n) {
				flag=true;break;
			}
		}
		if(flag) {
			System.out.println("找到了!"+n);
		}else {
			System.out.println("没找到!"+n);
		}
	}

	public static void main(String[] args) {
		ArgsDemo1 ad1=new ArgsDemo1();
		ad1.search(3,1,2,3,4,5);
		//可以将数组传递给可变参数列表 
		int[] a= {1,2,3,4,5};
		ad1.search(3, a);
		/*
		 注意:如果数组作为参数时,是不能将多个值传递给数组的
		 public void search(int n,int[] a) {}
		 ad1.search(3,1,2,3,4,5);会报错
		 */
	}
}
输出:
找到了!3
找到了!3
  • 可变参数列表所在的方法是最后被访问的。
/**
 * 文档注释:
 * 关于可变参数列表和重载的问题
 * @author 86156 
 */
public class ArgsDemo2 {
	//可变参数列表所在的方法是最后被访问的。
	public int plus(int a,int b) {
		System.out.println("不带可变参数的方法被调用!");
		return a+b;
	}
	public int plus(int... a) {
		int sum=0;
		for(int n:a) {
			sum+=n;
		}
		System.out.println("带可变参数的方法被调用!");
		return sum;
	}

	public static void main(String[] args) {
		ArgsDemo2 ad2=new ArgsDemo2();
		System.out.println("和为:"+ad2.plus(1,2));
	}
}
输出:
不带可变参数的方法被调用!
和为:3

可变参数列表总结:
1、可变参数列表作为方法参数时,如果有多个参数,可变参数列表只能放到最后一个位置。
2、不能有多个可变参数列表作为方法参数。而数组没有这个限制。
3、数组可以传递给可变参数的方法,反之不行。
4、在重载中,含有可变参数的方法是最后被选中的。
关于可变参数作为方法参数,下面的方法定义形式都是错误的:
public void method(int… m,int… n){} //不能有多个可变参数作为方法参数
public void method(int… m,int n){} //可变参数应该放到参数列表的最后
5、可变参数的底层实现就是数组。
6、当传入方法的参数数量不确定的时候,可以考虑使用可变参数列表。

五、综合案例:数组移位与统计

- 需求:定义一个类,对数组中的数据进行管理。

package com.imooc.datamanage;

import java.util.InputMismatchException;
import java.util.Scanner;

/**
 * 从键盘接收整型数据存放到数组中,并对数组中的数据进行管理
 * @author 86156
 */
public class DataManage {
	// 插入数据
	public int[] insertData() {
		int[] a=new int[10];
		Scanner sc=new Scanner(System.in);
		//少接收一个数据,为在指定位置处插入数据做准备
		for(int i=0;i<a.length-1;i++) {
			System.out.println("请输入第"+(i+1)+"个数据:");
			try {
				a[i]=sc.nextInt();
			}catch (InputMismatchException e) {
				System.out.println("输入数据的格式有误,不能有非数字!");
				sc.next();
				i--;//重新输入刚才的数据
			}
		}
		return a;
	}
	/**
	 * 显示数组中元素的内容
	 * @param a 数组
	 * @param length  要显示的数组元素个数
	 */
	public void showData(int[] a,int length) {
		for(int i=0;i<length;i++) {
			System.out.print(a[i]+"   ");
		}
		System.out.println();
	}
	/**
	 * 从键盘接收一个数据,插入到数组的指定位置处
	 * @param a 要插入数据的数组
	 * @param n 要插入的数据
	 * @param k 要插入的位置,从0开始
	 * 在数组中插入数据,相当于对数组的元素进行赋值,会对当前数据进行覆盖
	 */
	public void insertAtArray(int[] a,int n,int k) {
		//注意从最后一个数据开始移动,避免数据覆盖
		for(int i=a.length-1;i>k;i--) {
			a[i]=a[i-1];
		}
		a[k]=n;
	}
	/**
	 * 输出数组中能被3整除的元素
	 * @param a
	 */
	public void divThree(int[] a) {
		String str="";
		int count=0;
		for(int n:a) {
			if(n%3==0) {
				str=str+n+" ";
				count++;
			}
		}
		if(count==0) {
			System.out.println("数组中没有能被3整除的元素!");
		}else {
			System.out.println("数组中能被3整除的元素为:"+str);
		}
	}
	/**
	 * 提示信息
	 */
	public void notice() {
		System.out.println("************************************");
		System.out.println("                   1--插入数据");
		System.out.println("                   2--显示所有数据");
		System.out.println("                   3--在指定位置处插入数据");
		System.out.println("                   4--查询能被3整除的数据");
		System.out.println("                   0--退出");
		System.out.println("************************************");
	}
	public static void main(String[] args) {
		DataManage dm=new DataManage();
		Scanner sc=new Scanner(System.in);
		//在主方法中定义的变量都是局部变量,需要赋初值
		int input=0;
		int[] a = null;
		int n=0,k=0;//n表示要插入的数据,k表示要插入的位置
		while(true) {
			dm.notice();
			System.out.println("请输入对应的数字进行操作:");
			try {
				input = sc.nextInt();
			} catch (InputMismatchException e) {
				System.out.println("输入的数据格式有误,不能有非数字!");
				sc.next();
				continue;
			}
			
			if(input==0) {
				System.out.println("退出程序!");
				break;
			}
			switch(input) {
			case 1:
				//插入数据
				a=dm.insertData();
				//显示数据
				System.out.println("数组元素为:");
				dm.showData(a, a.length-1);
				break;
			case 2:
				if(a!=null) {
					System.out.println("数组元素为:");
					if(a[a.length-1]==0) {
						//如果数组的最后一个元素为0,说明还没有插入数据,因此不显示最后一个元素
						dm.showData(a, a.length-1);
					}else {
						dm.showData(a, a.length);
					}
				}else {
					System.out.println("还未在数组中插入数据,请重新选择操作!");
				}
				break;
			case 3:
				//在指定位置插入数据
				if(a!=null) {
					System.out.println("请输入要插入的数据:");
					try {
						n=sc.nextInt();
						System.out.println("请输入要插入的位置:");
						k=sc.nextInt();
					} catch (InputMismatchException e) {
						System.out.println("输入的数据格式有误,不能有非数字!");
						sc.next();
						break;
					}
					dm.insertAtArray(a, n, k);
					dm.showData(a, a.length);
				}else {
					System.out.println("还未在数组中插入数据,请重新选择操作!");
				}
				break;
			case 4:
				if(a!=null) {
					dm.divThree(a);
				}else {
					System.out.println("还未在数组中插入数据,请重新选择操作!");
				}	
				break;
			}
		}
	}
}

输出:
************************************
                   1--插入数据
                   2--显示所有数据
                   3--在指定位置处插入数据
                   4--查询能被3整除的数据
                   0--退出
************************************
请输入对应的数字进行操作:
1
请输入第1个数据:
1
请输入第2个数据:
2
请输入第3个数据:
3
请输入第4个数据:
4
请输入第5个数据:
5
请输入第6个数据:
6
请输入第7个数据:
7
请输入第8个数据:
8
请输入第9个数据:
9
数组元素为:
1   2   3   4   5   6   7   8   9   
************************************
                   1--插入数据
                   2--显示所有数据
                   3--在指定位置处插入数据
                   4--查询能被3整除的数据
                   0--退出
************************************
请输入对应的数字进行操作:
2
数组元素为:
1   2   3   4   5   6   7   8   9   
************************************
                   1--插入数据
                   2--显示所有数据
                   3--在指定位置处插入数据
                   4--查询能被3整除的数据
                   0--退出
************************************
请输入对应的数字进行操作:
3
请输入要插入的数据:
12
请输入要插入的位置:
6
1   2   3   4   5   6   12   7   8   9   
************************************
                   1--插入数据
                   2--显示所有数据
                   3--在指定位置处插入数据
                   4--查询能被3整除的数据
                   0--退出
************************************
请输入对应的数字进行操作:
4
数组中能被3整除的元素为:3 6 12 9 
************************************
                   1--插入数据
                   2--显示所有数据
                   3--在指定位置处插入数据
                   4--查询能被3整除的数据
                   0--退出
************************************
请输入对应的数字进行操作:
0
退出程序!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1583294.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【技术揭秘】爬取网站或APP应用的几种常用方案:RPA、抓包工具、Python爬虫,你了解多少?

本来准备空闲之余尝试用RPA软件抓取数据&#xff0c;【AIRPA系列】1、利用AIRPA提升工作效率 应用场景 &#xff0c; 最近工作项目有点忙&#xff0c; RPA实操系列可能会晚点了&#xff08;自己真正实操后再写&#xff0c;copy别人的没啥意思&#xff09;。这里简单整理下爬取…

Docker快速上手及常用命令速查

Docker快速上手 安装 在ubuntu上安装docker: sudo apt-get install docker docker -v #查看版本在centos7上安装docker&#xff1a;(docker在YUM源的Extras仓库中) yum install docker systemctl start dockerdocker常用命令速查 #查看docker信息 docker info #查看本地镜…

【面试题】redis在工作中的使用场景有哪些?

前言&#xff1a;在实际工作中&#xff0c;Redis作为一种高性能的内存数据库和缓存系统&#xff0c;可以应用于多种场景&#xff0c;同时在面试过程中也经常被问到类似的问题&#xff0c;我们经常会被问的一脸懵逼&#xff0c;那今天我们就来总结一下redis的一些使用场景。 数据…

Linux--进程间的通信-匿名管道

进程间的通信 进程间通信&#xff08;IPC&#xff0c;Interprocess Communication&#xff09;是指在不同进程之间传输数据和交换信息的一种机制。它允许多个进程在同一操作系统中同时运行&#xff0c;并实现彼此之间的协作。 进程间通信方式&#xff1a; 管道&#xff08;Pi…

前端开发中地图定位与距离计算的应用实践

前端开发中地图定位与距离计算的应用实践 在前端开发中&#xff0c;地图功能的应用日益广泛&#xff0c;无论是用户位置的定位、目标距离的计算&#xff0c;还是地址的解析与展示&#xff0c;地图都发挥着不可替代的作用。本文将重点介绍前端开发中实现地图定位、距离计算以及…

电销卡呼叫必须录音吗

在现代的销售策略中&#xff0c;电话销售&#xff08;电销&#xff09;扮演着至关重要的角色。为了提高电销效率和质量&#xff0c;许多企业采用了电销卡来进行日常的电话营销活动。电销卡通常指的是专为电话销售设计的电话号码或线路&#xff0c;它们通常具备一些特殊的功能&a…

agi入门-大模型开发基础

AGI(Artifical General Inteligence)的到来还有多久&#xff1f; 乐观预测&#xff1a;明年主流预测&#xff1a;3-5年悲观预测&#xff1a;10年 AGI时代&#xff0c;AI无处不在&#xff0c;相关从来者将如何分&#xff1f; AI使用者&#xff1a;使用别人开发的AI产品AI产品…

精准识别更安全,横扫六大手指难题的鹿客指脉锁S6 Max来了

极致的自然动作、极致的精准识别、识别时间600毫秒……在4月10日鹿客指脉锁S6 Max发布会上&#xff0c;高密度的关键词让关注发布会的所有人都意识到&#xff0c;下一代智能锁真的来了。 鹿客也将新品S6 Max称为“行业内、搭载全新一代指脉技术的革新之作”。 1、十年回答&…

idea中输入法被锁定如何清除

今天遇到一个问题&#xff1f;idea中输入法被锁定了&#xff0c;无论怎么切换输入法&#xff0c;切换中英文&#xff0c;在idea中输出的均为英文内容&#xff0c;该如何解决呢&#xff1f;&#xff08;idea官网&#xff1a;JetBrains: 软件开发者和团队的必备工具&#xff09; …

VPP 负载均衡测试代码

1. 均衡的测试思想和流程说明。 先说一下理论&#xff0c; 然后后边才知道 代码逻辑。 调试了两天&#xff0c;这个代码终于通了。 由于时间关系&#xff0c; 画了一个粗略的图。另外这个代码只是流程通了&#xff0c;不过要帮助理解负载均衡我认为已经足够了。 下面是windo…

three.js尝试渲染gbl模型成功!(三)

参照教程&#xff1a;https://cloud.tencent.com/developer/article/2276766?areaSource102001.5&traceId88k805RaN_gYngNdKvALJ &#xff08;作者&#xff1a;九仞山&#xff09; 通过最近两天查three.js入门教程了解到 这玩应支持包括 .obj、.gltf等类型的模型结构。 g…

【vue/uniapp】使用 smooth-signature 实现 h5 的横屏电子签名

通过github链接进行下载&#xff0c;然后代码参考如下&#xff0c;功能包含了清空、判断签名内容是否为空、生成png/jpg图片等。 签名效果&#xff1a; 预览效果&#xff1a; 下载 smooth-signature 链接&#xff1a;https://github.com/linjc/smooth-signature 代码参考&a…

超图SuperMap-Cesium,地形图层,可以渲染一个或多个地形(地形可缓存DEM,TIN方式),webGL代码开发(2024-04-08)

1、缓存文件类型TIN格式&#xff0c;TIN的地形sct只能加一个 const viewer new Cesium.Viewer(cesiumContainer); viewer.terrainProvider new Cesium.CesiumTerrainProvider({isSct: true, // 是否为iServer发布的TIN地形服务,stk地形设置为falserequestWaterMask : true,…

MySQL学习笔记2——基础操作

基础操作 一、增删改查1、添加数据2、删除数据3、修改数据4、查询语句 二、主键三、外键和连接1、外键2、连接 一、增删改查 1、添加数据 INSERT INTO 表名[(字段名[,字段名]…)] VALUES (值的列表); --[]表示里面的内容可选添加数据分为插入数据记录和插入查询结果 插入数据…

[通俗易懂]《动手学强化学习》学习笔记2-第2、3、4章

文章目录 前言小总结&#xff08;前文回顾&#xff09;第二章 多臂老虎机2.2.2形式化描述 第三章 马尔可夫决策过程3.6 占用度量 代码3.6 占用度量 定理2 第四章 动态规划算法4.3.3 策略迭代算法 代码 总结 前言 参考&#xff1a; 《动手学强化学习》作者&#xff1a;张伟楠&a…

JR-SMD201-P便携式网络解码器

详细介绍&#xff1a; JR-SMD201-P便携式网络解码器采用1/2U设计&#xff0c;支持AVS/H.265/H.264/MPEG2解码&#xff0c;支持IP输入&#xff0c;支持1080P/1080I/720P/576I/480I多种分辨率&#xff0c;支持DRA/AC3/EAC3/AAC/MPEG等音频。 产品特点 支持输入方式IP 接口丰富&a…

scan纯享代码 java

scan纯享代码 java 1 scan用法2 next3 nextLine 1 scan用法 在录入中间有回车的字符串的时候&#xff0c;不要使用next&#xff08;&#xff09;和nextLine&#xff08;&#xff09;的配合&#xff01;&#xff01; scan用法 Scanner scannernew Scanner(System.in); String…

kvm基础命令

前言 一、基础命令 1.虚拟机查看 2.虚拟机开启与关闭 3.虚拟机删除 4.查看虚拟机的配置 5.配置文件重定向 6.命令行登录虚拟机 二、调整虚拟机磁盘大小 三、虚拟机创建快照 四、virsh console报错 总结 前言 今天我们分享一下如何使用kvm基础命令。 一、基础命令 1.虚拟机查看…

stack和queue模拟实现

前言 上一期我们介绍了stack和queue的使用&#xff0c;本期我们来模拟实现一下他们&#xff01; 本期内容介绍 容器适配器 deque介绍 为什么stack和queue的底层选择deque为默认容器&#xff1f; stack 模拟现实 queue 模拟实现 什么是容器适配器&#xff1f; 适配器是一种设…

《QT实用小工具·二十三》 Ntp校时类

1、概述 源码放在文章末尾 该项目实现了 Ntp校时类 &#xff0c;包含如下功能&#xff1a; 可设置Ntp服务器IP地址。 推荐用默认的阿里云时间服务器 ntp1.aliyun.com 收到时间信号发出。 时间精确到秒。 下面是demo演示&#xff1a; 项目部分代码如下&#xff1a; #if…