22 函数以及常见的系统类

函数(function)

什么是函数

函数:为了解决某一特定问题,具有名称的代码集合。函数也就是现实中的一种行为动作

java 如何定义函数

访问修饰符 函数返回值的类型| void 函数名称([参数列表]) {
//函数体
//return 返回值;
}
Java中函数是属于类的!!必须定义在类中,所以说函数是类成员
先把函数都定义为静态函数,等学习了面向对象在定义常规函数
在这里插入图片描述

函数的调用

函数是无法自己执行的!!必须通过调用才可以执行!!
函数名称([参数列表]);
在这里插入图片描述
在这里插入图片描述

java中静态方法没有办法直接调用非静态方法,只能调用静态方法
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

函数的分类

  • 有没有参数
    -有参函数
    -无参函数
class ClassRoom01{
	public static void main(String[] args){
		showInfo("张三",23,'女');//有参数的函数,使用时必须传递对应的参数
		showInfo("里斯",22,'男');
	}
	public static void showInfo(String name,int age, char gender){
		System.out.println("我的名字叫:"+name);
		System.out.println("我的年龄:"+age);
		System.out.println("我的性别:"+gender);
		
	}
}

在这里插入图片描述

  • 有没有返回值
    -有返回值的函数
    -无返回值的函数
class ClassRoom02 {
	public static void main(String[] args) {
		//将函数的返回值使用变量接受
		int a = add(5,8);
		System.out.println("8+5="+a);
		
	}
	public static int add(int x,int y){
		return x+y;
		//函数中,如果遇到return关键字,函数立刻返回
	}
}

  • 定义者
    -系统函数
    -第三者
    -自定义函数

局部变量

局部变量(本地变量):定义在函数中的变量叫做局部变量

函数在内存中调用的本质

详情见这位大佬笔记
以前的作业题用函数解决
在这里插入图片描述

函数重载(overload)

  • 什么是函数重载:函数名称相同,函数的参数的个数或者类型不同,调用的时候,自动匹配对应的函数
  • 面试题:请简述overload(函数重载)override(覆盖)overwrite(重写)
  • 思考题:函数重载是所有编程语言都有的吗?
    函数重载现象是强数据类型语言(Java、C 、C++、C#)所特有的现象,弱数据类型语言(javascript、python、ruby)是不具备函数重载

函数递归(recursion)

  • 什么叫做递归:函数自身调用自身

  • 求1~n的和

  • 在这里插入图片描述

  • 递归时的内存模型
    -优点:分治理念的体现,可以把非常复杂的问题简单解决
    -缺点:非常消耗内存,所有说当栈被全部占用后,触发StackOverflowError异常!!!
    -注意:
    可以使用java -X -Xss<大小>,来调整JVM的栈大小空间
    可以使用java -X -Xms<大小>,来设置初始Java堆大小
    可以使用java -X -Xmx<大小>,来设置最大Java堆大小

  • 第一题:求第n项斐波那契数列的值?
    从第三个值开始,每个值是前两个值之和
    0 、1、1、2、3、5、8、13、21、34…
    1、1、2、3、5、8、13、21、34、55…
    1、2、3、5、8、13、21、34、55 、89…
    在这里插入图片描述在这里插入图片描述

  • 第二题
    上楼梯问题:某个人上楼梯,每次只能上一个台阶或者两个台阶,那么当这个人到达第n个台阶时,共有多少种走法?
    方法1:画图找规律,发现是斐波拉契数列
    在这里插入图片描述
    方法2:考验逻辑思考能力
    假如求到达第10层有多少种方法就是求到第9层的方法加到第8层的方法之和
    在这里插入图片描述

  • 第三题
    买了一对刚刚出生的兔子,过了四个月称为成年兔子,成年兔子没一个月生一对小兔子,问第n个月,共有多少对兔子(不考虑兔子死亡的可能性)
    在这里插入图片描述
    在这里插入图片描述

查询Java的帮助文档

随机数的使用

Math类

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

Random类

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

java中的字符串对象

  • 在java中,被双引号,引用的内容就叫做字符串

  • 字符串在Java中不是基本数据类型,是对象,是引用数据类型

  • final修饰的,字符串是常量,它们的值不能被创建后改变。支持可变字符串字符串缓冲区。因为字符串对象是不可改变的,所以它们可以被共享

  • 在这里插入图片描述

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

  • 在这里插入图片描述

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

Scanner常见的Java类

作业题讲解

  • 第一题
    求第n项斐波那契数列的值?
    (斐波那契数列:1 1 2 3 5 8 13 21 34 55 89 …)
// 求第n项斐波那契数列的值?
//(斐波那契数列:1 1 2 3 5 8 13 21 34 55 89 ....)
 
 
import java.util.Scanner;
 
public class Test01 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入第n项的值:");
        int num=sc.nextInt();
        System.out.println("第n项的值为:"+number(num));
    }
    public static int number(int num){
        if(num<=2){
            return 1;
        }else if(num==3){
            return 2;
        }else {
            return number(num-2)+number(num-1);
        }
    }
}

在这里插入图片描述

  • 第二题
    上楼梯问题:某个人上楼梯,每次只能上一个台阶或者两个台阶,
    那么当这个人到达第n个台阶时,共有多少种走法?
//上楼梯问题:某个人上楼梯,每次只能上一个台阶或者两个台阶,
 //那么当这个人到达第n个台阶时,共有多少种走法?
 
import java.util.Scanner;
 
public class Test02 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入台阶的数量:");
        int num=sc.nextInt();
        System.out.println("走台阶的数量方法有:"+number(num));
    }
    public static int number(int num){
        if(num<=2){
            return num;
        }else {
            return number(num-2)+number(num-1);
        }
    }
}

在这里插入图片描述

  • 第三题
    买了一对刚刚出生的兔子,过了四个月被称为成年兔子,成年兔子,每一个生出一对小兔子,问第n个月,共有多少对兔子(不考虑兔子死亡问题)
 //买了一对刚刚出生的兔子,过了四个月被称为成年兔子,成年兔子,每一个生出一对小兔子,问第n个月,共有多少对兔子(不考虑兔子死亡问题)
 
 
import java.util.Scanner;
 
public class Test03 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入月份:");
        int num=sc.nextInt();
        System.out.println("问第"+num+"个月,共有"+getRabbitCount(num)+"对兔子:");
    }
    public static int getRabbitCount(int num) {
        if(num <= 4) {
        //判断几个月生一胎
            return 1;
        }
        return getRabbitCount(num - 1) + getRabbitCount(num - 4);
    }
}

在这里插入图片描述

  • 第四题
    根据完整的路径从路径中分离文件路径、文件名及扩展名

(传递一个路径 c://a//b//c.avi,返回该文件的后缀名)

public class Test04{
	public static void main(String[] args){
		getSuffix("d://a/b/c/d.avi");
	}
	public static String getSuffix(String path){
		String[] arrs = path.split("\\.");
		//System.out.println(arrs);数组不能这样打印
		return null;
	}
}

在这里插入图片描述

public class Test04{
	public static void main(String[] args){
		getSuffix("d://a/b/c/d.avi");
	}
	public static String getSuffix(String path){
		String[] arrs = path.split("\\.");
		//System.out.println(arrs);数组不能这样打印
		for (int i=0;i<arrs.length ;i++ ){
			System.out.println(arrs[i]);
		}
		return null;
	}
}

在这里插入图片描述

import java.util.Scanner;
public class Test04{
	public static void main(String[] args){
		Scanner input = new Scanner(System.in);
		System.out.print("请输入路径");
		String url = input.next();
        System .out.println(getSuffix(url));
		//getSuffix("d://a/b/c/d.avi");
	}
	public static String getSuffix(String path){
		//第一个方案
		//String[] arrs = path.split("\\.");
		//return arrs[arrs.length-1];
		//第二种方案
		//System.out.println(path.indexOf("."));
		return path.substring(path.indexOf(".")+1);

	}
}

在这里插入图片描述

public class Test04{
	public static void main(String[] args){
		String suffix = getSuffix("d://a/b/c/d.avi");
		System.out.println(suffix);
	}
	public static String getSuffix(String path){
		
		return path.substring(path.indexOf(".")+1);

	}
}

在这里插入图片描述
前面都是文件夹只有一个点的,如果有多个点则最后一个点切

public class Test04{
	public static void main(String[] args){
		String suffix = getSuffix("d://a/b.ba/c.c/d.avi");
		System.out.println(suffix);
	}
	public static String getSuffix(String path){
		
		return path.substring(path.indexOf(".")+1);

	}
}

在这里插入图片描述
注:结果会出错

public class Test04{
	public static void main(String[] args){
		String suffix = getSuffix("d://a/b.ba/c.c/d.avi");
		System.out.println(suffix);
	}
	public static String getSuffix(String path){
		
		return path.substring(path.lastIndexOf(".")+1);

	}
}

在这里插入图片描述

  • 第五题
    输入一个字符串,判断该字符串是否是回文字符串(面试题)
    (123454321)
import java.util.Scanner;
        public class Test05{
             public static void main(String[] args){
	             Scanner input = new Scanner(System.in);
	             System.out.print("请输入字符串,判断是否是回文字符串:");
				 String url = input.next();
				 System.out.println(isPalindrome(url));
             }
			 public static boolean isPalindrome(String str){
				 for(int i = 0;i < str.length() /2;i++){
					if(str.charAt(i) != str.charAt(str.length()-1-i)){
						return false;
					}
				 }
				 return true;
				
			 }

        }

在这里插入图片描述

  • 第六题
    去掉字符串中的所有空格
import java.util.Scanner;
        public class Test06{
             public static void main(String[] args){
	             Scanner input = new Scanner(System.in);
	             System.out.print("请输入字符串,去掉空格:");
				 String str = input.nextLine();
				 System.out.println(delSpace(str));
             }
			 public static String delSpace(String s){
				  
				  //return s.replace(" ","");
				  return s.replaceAll(" ","");
				
			 }

        }

在这里插入图片描述

import java.util.Scanner;
        public class Test06{
             public static void main(String[] args){
	             Scanner input = new Scanner(System.in);
	             System.out.print("请输入字符串,去掉空格:");
				 String str = input.nextLine();
				 System.out.println(delSpace(str));
             }
			 public static String delSpace(String s){
				  
				  String[] arrs = s.split(" ");
				  //join方法是静态方法,直接使用类名称调用
				  return String.join("|",arrs);
				
			 }

        }

在这里插入图片描述

  • 第七题
    将字母全部转换为大写或小写
public class Test07 {
    public static void main(String[] args) {
        String word=" I love You ";
        word.trim();
        System.out.println(word.toLowerCase());
        System.out.println(word.toUpperCase());
 
    }
}

在这里插入图片描述

  • 第八题
    接收用户输入的一句英文,将其中的单词以反序输出,(例:“hello c sharp”→“sharp c hello”)
import java.util.Scanner;
 
public class Test08 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();
        s.trim();
        String ss=" ";
        String[] arr=s.split(" ");
        for(int i=arr.length-1;0<=i;i--){
            ss+=arr[i];
            ss+=" ";
        }
        System.out.println(ss);
    }
}

在这里插入图片描述

  • 第九题
    从请求地址中提取出用户名和域名
import java.util.Scanner;
 
public class Test09 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();
        //System.out.println(s);
        String []arrs=s.split("://|/");
        System.out.println("域名为"+arrs[1]);
        String []arrname=s.split("=|&");
        System.out.println("用户名为:"+arrname[1]);
    }
}
//https://www.163.com/?userName=admin&pwd=123456

在这里插入图片描述

  • 第十题
    让用户输入一句话,找出所有"呵"的位置。
import java.util.Scanner;
 
public class Test10 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入对话:");
        String str = sc.nextLine();
        char val='呵';
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)==val){
                System.out.println("呵——————"+i);
            }
        }
        
 
    }
}

在这里插入图片描述

  • 第十一题
    让用户输入一句话,判断这句话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变成”老牛很**”;
import java.util.Scanner;
 
public class Test11 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一句话:(包含邪包含恶)");
        String s = sc.nextLine();
        if(s.contains("邪恶")){
		    String ss = s.replace("邪恶","**");
		    System.out.println(ss);
		} else{
			System.out.println("没有可替换字符");
		}
    }
}

在这里插入图片描述

  • 第十二题
    猜字游戏,计算机随机一个0~100的整数,每次用户输出字猜,
    (提示如下:
    猜大了哦,重新猜
    猜小了哦,重新猜
    猜对了)
import java.util.Scanner;
 
public class Test12 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
 
        int number=(int)(Math.random()*100);
        //System.out.println("随机数为:"+number);
        for(int i=5;i>=1;i--){
            System.out.println("请输入一个数:");
            int num=sc.nextInt();
            if(num>number){
                System.out.println("温馨提示: 猜大了哦!重新猜");
            }else if(num<number){
                System.out.println("温馨提示:猜小了哦!重新猜");
            }else {
                System.out.println("猜对了");
				break;
            }
            System.out.println("您还有"+(i-1)+"次机会");
 
        }
 
    }
}

在这里插入图片描述

  • 第十三题
    猜拳游戏,石头剪刀布。随机数生成石头剪刀布(0:石头 1:剪刀 2:布)
  //猜拳游戏,石头剪刀布。随机数生成石头剪刀布(0:石头  1:剪刀  2:布)
 
import java.util.Random;
import java.util.Scanner;
 
public class Test13 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        Random random_num =new Random();
        for(int i=3;i>=1;i--){
            int computer=random_num.nextInt(3);
            System.out.println("欢迎参加猜拳游戏(0:石头  1:剪刀  2:布)");
			System.out.print("请出拳头:");
            int people=sc.nextInt();
            System.out.println("机器人出:"+computer);
            if(computer-people==1||computer-people==-2){
                System.out.println("恭喜您胜出");
				break;
            }else if(computer-people==0){
                System.out.println("平手");
            }else {
                System.out.println("机器人胜出");
            }
            System.out.println("您还有"+(i-1)+"机会");
        }
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值