一.方法重载与递归
从今天开始我们就要用IDEA啦,如果有需要IDEA的话可以评论哦!也可以自行百度下载。
package com.qf.java1904;
public class MethodTest {
public static void main(String[] args) {
System.out.println("方法重载的基本说明");
//方法的调用
add(10,20);
add("Hello", "Hello");
add("Hello");
add(10,"World");
printNumber(1000);
}
/*
1.方法的重载:方法名相同,参数列表不同(参数类型,参数个数,不同类型惨的顺序不同,
与返回值无关).
好处:调用者不关心版本不同的方法实现,需要根据自己能提供的参数来九鼎调用哪一个方法.
*/
//两个整数相加的方法
public static void add(int a,int b){
System.out.println("a+b=" + (a + b));
}
//两个字符串相加的方法
public static void add(String a,String b) {
System.out.println("a+b=" + a + b);
}
//输出a的值
public static int add(String a){
System.out.println("a:" + a);
return 0;
}
public static void add(int a,String b) {
System.out.println("a+b=" + a + b);
}
/*
2.方法的递归
*/
//根据传入的参数,把他的值打印
//方法的递归:方法在自己的内部调用自己
public static void printNumber(int number) {
System.out.println("number");
add(50,100);
if(number > 100) {
printNumber(number - 100);
}
System.out.println(number + "调用结束");
}
}
二.递归的使用演示
//递归的使用演示
public class RecursionDemo {
public static void main(String[] args) {
System.out.println("递归使用演示");
//求1-100的和
/*
//这是用for循环的格式,思考如何转换成递归的方式
int sum = 0;
for(int i = 0 ; i < 100 ; i++){
sum += 1;
}
*/
int total = total(100);
System.out.println("1加到100的和是:" + total);
int valueByNumber = valueByNumber(5);
System.out.println("1-20的阶乘是:" + valueByNumber);
}
/*
1.当使用递归调用方法的时候,前面的多次方法调用都没有正常
结束,每一次都在调用下一次的自己.
2、只有最后一次调用当前方法自己的时候,方法才换范回准确结果
3.一次把这个结果返回给前一次方法调用,指导返回给第一次的调用
*/
public static int total(int number){
if(number == 1){
return 1;
}
else{
//1到number的和就是number加上它前面所有数的和
return total(number - 1) + number;
}
}
//求个n!
public static int valueByNumber(int a){
if(a == 1){
return 1;
}
else{
return valueByNumber(a - 1)*a;
}
}
}
三.数组的基本使用
public class ArrayDemo {
public static void main(String[] args) {
System.out.println("数组的基本使用");
/*
数组的声明格式: 数据类型[] 数组名 比如:int[] a;
*/
/*
int为数组中可以保存的元素类型,中括号说明这个变量是个数组类型,后面
的firstArray为数组的名字.
本行代码,相当于声明了一个变量,变量类型是整形数组.
*/
int[] firstArray;//仅声明没有初始化
/*
1.静态初始化
*/
//数组声明的同时进行静态初始化
//静态初始化的值用大括号括起来,用都好分隔开
int[] secondArray = {1, 2, 3, 4, 5};
//静态初始化时也可以使用new关键字
int[] thirdArray = new int[]{1, 2, 3, 4, 5};
//声明一个字符串数组,并静态初始化
String[] strArray = {"a" ,"b", "c"};
//数组是一种数据类型,不同于我们学过的8种基本类型,叫引用类型.
/*
2.动态初始化:
数组声明的同时,只给定数组的大小,不提供元素的值,系统会给每一个
元素一个初始值.我们会在后续代码给数组的元素赋值,这种为动态初始化.
*/
int count = 10;
int[] fourthArray = new int[count];
/*
数组元素的访问:
数组元素通过下标的方式访问,下标的值从0到数组的大小减1这个范围.
*/
fourthArray[0] = 1;//给数组下标为零的元素赋值为1
fourthArray[1] = 2;//给数组下标为1的元素赋值为2
//通过循环,使用下标给数组每一个元素赋值
for (int i = 0; i < fourthArray.length; i++) {
fourthArray[i] = i + 5;
}
//将数组中下标为3的值赋值给变量a(实际上是第4个值,因为数组从0开始)
int a = fourthArray[3];
//输出数组中每一个元素的值
for (int i = 0; i < fourthArray.length; i++) {
int number = fourthArray[i];
System.out.println("下标为" + i + "的数组的值为:" + number);
}
}
}
四.数组的基本使用练习
import java.util.Scanner;
public class ArrayTest {
public static void main(String[] args) {
System.out.println("数组的基本使用练习");
/*
1.用户输入5个整数
2.输出这5个数的最大值,最小值以及平均值
*/
Scanner input = new Scanner(System.in);
System.out.println("请输入5个整数,用空格分离");
//第一步,创建一个可以保存5个元素的数组
int[] numbers = new int[5];
for(int i = 0 ; i < 5 ; i++){
//从键盘获得用户每一次输入的值,保存到数组里
numbers[i] = input.nextInt();
}
//打印数组所有元素的值
for(int i = 0 ; i < numbers.length ; i++){
System.out.print(numbers[i] + " ");
}
System.out.println();
//查找数组中最大值,最小值.计算平均值.
int maxnumber = 0;
int minnumber = numbers[0];
int sum = 0;
for (int i = 0; i < numbers.length; i++) {
//如果最大值比数组当前元素的值小
if(maxnumber < numbers[i]){
//将当前元素的值保存到最大值中
maxnumber = numbers[i];
}
//如果最小值比数组当前元素的值小
if(minnumber > numbers[i]){
//将当前元素的值保存到最小值中
minnumber = numbers[i];
}
//对数组元素求和
sum += numbers[i];
}
System.out.println("最大值是:" + maxnumber);
System.out.println("最小值是:" + minnumber);
System.out.println("平均值是:" + 1.0*sum/numbers.length);
}
}
五.数组的基本使用练习2
import java.util.Scanner;
public class ArrayTest2 {
public static void main(String[] args) {
System.out.println("数组的基本使用");
/*
1.用户输入10个整数,保存到数组中
2.输出第一个元素出现的次数
比如 1 2 4 2 2 4 1 4 4 2
输出1出现2次
*/
Scanner input =new Scanner(System.in);
System.out.println("请输入10个整数,用空格分离");
//第一步,创建一个可以保存10个元素的数组
int[] numbers = new int[10];
for (int i = 0; i < 10; i++) {
//从键盘里获得每一次输入的值,并且保存在数组里
numbers[i] = input.nextInt();
}
//打印元素里所有的值
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
}
System.out.println();
//查找第一个元素出现的次数
int times = 0;
for (int i = 0; i < numbers.length; i++) {
if(numbers[0] == numbers[i]){
times++;
}
}
六.数组的基本使用练习3
这次稍微复杂了一点哦!
import java.util.Scanner;
public class ArrayTest3 {
public static void main(String[] args) {
/*
1.用户输入10个整数,保存到数组中
2.输出每个元素出现的次数
比如 1 2 4 2 2 4 1 4 4 2
输出1出现2次,2出现4次,4出现4次
*/
Scanner input =new Scanner(System.in);
System.out.println("请输入10个整数,用空格分离");
//第一步,创建一个可以保存10个元素的数组
int[] arr = new int[10];
for (int i = 0; i < 10; i++) {
//从键盘里获得每一次输入的值,并且保存在数组里
arr[i] = input.nextInt();
}
//打印元素里所有的值
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
//设置一个新的数组
int[] arr2 = new int[arr.length];
//设置一个标记
boolean flag;
//
for (int i = 0; i < arr.length; i++) {
flag = true;
for (int j = 0; j < arr.length; j++) {
if (arr[i] == arr2[j]) {
flag = false;
}
}
if (flag) {
arr2[i] = arr[i];
int count2 = 0;
for (int j = i; j < arr.length; j++) {
if (arr[i] == arr[j]) {
count2++;
}
}
System.out.println(arr[i] + "出现了" + count2 + "次");
}
}
}
}