自学Java---基础语法---第五天

刚开始学 如果您感觉方法或者过程有不对的地方 欢迎提出 小白好借鉴 O(∩_∩)O哈哈~

方法

方法概述

方法实现的过程中,会包含很多条语句用于完成某些有意义的功能——通常是处理文本,控制输入或计算数值。
我们可以通过在程序代码中引用方法名称和所需的参数,实现在该程序中执行(或称调用)该方法。方法,一般都有一个返回值,用来作为事情的处理结果。

方法的语法格式

在Java中,声明一个方法的具体语法格式如下:

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){ 
	执行语句
	……… 
	return 返回值;
}

对于上面的语法格式中具体说明如下:
修饰符:方法的修饰符比较多,有对访问权限进行限定的,有静态修饰符static,还有最终修饰符final等,这些修饰符在后面的学习过程中会逐步介绍
返回值类型:用于限定方法返回值的数据类型
参数类型:用于限定调用方法时传入参数的数据类型
参数名:是一个变量,用于接收调用方法时传入的数据
return关键字:用于结束方法以及返回方法指定类型的值
返回值:被return语句返回的值,该值会返回给调用者
需要特别注意的是,方法中的“参数类型 参数名1,参数类型 参数名2”被称作参数列表,它用于描述方法在被调用时需要接收的参数,如果方法不需要接收任何参数,则参数列表为空,即()内不写任何内容。方法的返回值必须为方法声明的返回值类型,如果方法中没有返回值,返回值类型要声明为void,此时,方法中return语句可以省略。

方法定义练习

无返回值无参数方法,如打印3行,每行3个号的矩形

public class Test {
    public static void main(String[] args) {
        printStar();
    }

    public static void printStar() {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }

}

有返回值无参数方法,如键盘录入得到一个整数

public class Test {
    public static void main(String[] args) {
        int num = getNum();
        System.out.println(num);
    }

    public static int getNum() {
        System.out.println("请输入一个整数");
        int num = new Scanner(System.in).nextInt();
        return num;
        }
    }

无返回值有参数方法,如打印指定M行,每行N个*号的矩形

public class Test {
    public static void main(String[] args) {
         printStar(4,6);
    }

    public static void printStar(int row,int column) {
        //无返回值有参数方法,如打印指定M行,每行N个*号的矩形
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < column; j++) {
                System.out.print("* ");
            }
            System.out.println();
        }
        }
    }

有返回值有参数方法,如求三个数的平均值

public class Test {
    public static void main(String[] args) {
       int average = getAverage(4,6,8);
        System.out.println(average);
    }

    public static int getAverage(int one,int two,int three) {
        //有返回值有参数方法,如求三个数的平均值
        return (one+two+three)/3;
        }
    }

Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。

public class Test {
   public static void main(String[] args) {
       int num = add(4, 6, 8);
       System.out.println(num);
   }

   public static int add(int x, int y) {
       return x + y;
   }

   public static int add(int x, int y, int z) {
       return x + y + z;
   }

   public static double add(double x, double y) {
       return x + y;
   }
}

重载的注意事项

重载方法参数必须不同:
参数个数不同,如method(int x)与method(int x,int y)不同
参数类型不同,如method(int x)与method(double x)不同
参数顺序不同,如method(int x,double y)与method(double x,int y)不同
重载只与方法名与参数类型相关与返回值无关
如void method(int x)与int method(int y)不是方法重载,不能同时存在
重载与具体的变量标识符无关
如method(int x)与method(int y)不是方法重载,不能同时存在

参数传递

定义方法时,参数列表中的变量,我们称为形式参数
调用方法时,传入给方法的数值,我们称为实际参数

public class ArgumentsDemo01 {
	public static void main(String[] args) {
		int a=5;
		int b=10;
		change(a, b);//调用方法时,传入的数值称为实际参数
		System.out.println("a=" + a);
		System.out.println("b=" + b);
	}

	public static void change(int a, int b){//方法中指定的多个参数称为形式参数
		a=200;
		b=500;
	}
}
public class ArgumentsDemo02 {
	public static void main(String[] args) {
		int[] arr = { 1, 2, 3 };
		change(arr);// 调用方法时,传入的数值称为实际参数
		
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}

	public static void change(int[] arr) {// 方法中指定的多个参数称为形式参数
		for (int i = 0; i < arr.length; i++) {
			arr[i] *= 2;
		}
	}
}	

在这里插入图片描述
当调用方法时,如果传入的数值为基本类型(包含string类型),形式参数的改变对实际参数不影响
当当用方法时,如果传入的数值为引用类型(string除外),形式参数的改变对实际参数有影响

随机点名器

public class Test {
    public static void main(String[] args) {
        String[] str = new String[4];
        addStudentName(str);
        printStudentName(str);
        randomName(str);
    }

    public static void addStudentName(String[] str) {
        for (int i = 0; i < str.length; i++) {
            System.out.println("请输入第" + (i + 1) + "个学生的姓名");
            str[i] = new Scanner(System.in).nextLine();
        }
    }

    public static void printStudentName(String[] str) {
        System.out.println("学生名单");
        for (String str1 : str) {
            System.out.print(str1 + ",");
        }
    }

    public static void randomName(String[] str) {
        String string = "";
        while (true) {
            int i = new Random().nextInt(str.length);
            System.out.println(str[i]);
            System.out.println("是否继续点名");
            string = new Scanner(System.in).next();
            if (string.equals("y")) {
                System.out.println("点名结束");
                break;
            }
        }
    }

}

库存管理案例

public class Test {
    //品牌型号
    static String[] brands = {"MacBookAir", "ThinkpadTr"};
    //尺寸大小
    static double[] sizes = {13.3, 14.0};
    //价格
    static double[] prices = {6988.88, 5999.99};
    //库存个数
    static int[] counts = {0, 0};

    public static void main(String[] args) {
        function();
    }

    private static void function() {

        System.out.println("-----------------库存管理-----------------");
        System.out.println("1.查看库存清单");
        System.out.println("2.修改商品库存数量");
        System.out.println("3.退出");
        System.out.println("请输入要执行的操作编号");
        int operatingNum = new Scanner(System.in).nextInt();
        over:  while (true) {
            switch (operatingNum) {
                case 1:
                    printStore(brands, sizes, prices, counts);
                    break over;
                case 2:
                    modifyCount(brands, counts);
                    break over;
                case 3:
                    exit();
                    return;
                default:
                    System.out.println("编号有误,请重新输入");
                    operatingNum = new Scanner(System.in).nextInt();
            }
        }
    }

    private static void modifyCount(String[] brands, int[] counts) {
        System.out.println("请输入要修改的库存数量");
        for (int i = 0; i < brands.length; i++) {
            System.out.println(brands[i]);
            counts[i] = new Scanner(System.in).nextInt();
        }
        printStore(brands, sizes, prices,counts);
    }

    private static void printStore(String[] brands, double[] sizes, double[] prices, int[] counts) {
        int totalCount = 0;//统计库存数量
        int totalMoney = 0;//统计库存金额
        System.out.println("品牌型号    尺 寸    价 格   库 存");
        for (int i = 0; i < brands.length; i++) {
            totalCount += counts[i];
            totalMoney += counts[i] * prices[i];
            System.out.println(brands[i] + " " + sizes[i] + "    " + prices[i] + "     " + counts[i]);
        }
        System.out.println("库存总计" + totalCount);
        System.out.println("库存金额总计" + totalMoney);
    }

}

作业

1.分析以下需求,并用代码实现(每个小需求都要封装成一个方法):
(1)键盘录入两个数据,求两个数据之和(整数和小数)
(2)键盘录入两个数据,判断两个数据是否相等(整数和小数)
(3)键盘录入三个数据,获取两个数中较大的值(整数和小数)
(4)打印m行n列的星形矩形
(5)打印nn乘法表
(6)计算长方形和圆形的面积

public class Test {
    public static void main(String[] args) {
        //multiplicationTable(9);
    }
   // 键盘录入两个数据,求两个数据之和(整数和小数)
    public static int sum(int x ,int y){
        return x+y;
    }
    public static double sum(double x ,double y){
        return x+y;
    }
    //键盘录入两个数据,判断两个数据是否相等(整数和小数)
    public static String function(int x,int y){
        return x>y?"相等":"不相等";
    }
    public static String function(double x,double y){
        return x>y?"相等":"不相等";
    }
    //键盘录入两个数据,获取两个数中较大的值(整数和小数)
    public static int maxNum(int x,int y){
        return x>y?x:y;
    }
    public static double maxNum(double x,double y){
        return x>y?x:y;
    }
    //打印m行n列的星形矩形
    public static void pringStar(int m,int n){
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }
    //打印nn乘法表
    public static void multiplicationTable(int n){
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j+"*"+i+"="+(i*j)+'\t');
            }
            System.out.println();
        }
    }
    //计算长方形和圆形的面积
    public static double Area(double length,double width){
        return length*width;
    }
    public static double Area(double radius){
        return radius*PI;//这里的PI是java.lang.Math.PI;包下定义好的常量
    }
}

2.分析以下需求,并用代码实现:(封装成方法)
(1)打印1到100之内的整数,但数字中包含9的要跳过
(2)每行输出5个满足条件的数,之间用空格分隔
(3)如:
1 2 3 4 5
6 7 8 10 11

public class Test {
    public static void main(String[] args) {
        printNum();
    }

    public static void printNum() {
        int count = 0;
        for (int j = 1; j <= 100; j++) {
            if (j == 9 || j % 10 == 9 || j / 10 == 9) {
                continue;
            }
            System.out.print(j + "\t");//把空格换成\t纯属为了输出好看
            count++;
            if (count == 5) {
                System.out.println();
                count=0;
            }
        }
    }
}

3.分析以下需求,并用代码实现:(封装成方法)
(1)打印1-100之间的所有素数及个数
(2)每行输出5个满足条件的数,之间用空格分隔
注意:大于1的能被1和其本身整除的数叫素数。


//这道题做了一下午,素数、平方根什么的,早就忘光了,各种百度脑补。现在还有点蒙圈

public class Test {
    public static void main(String[] args) {
       result();
    }

    public static void result(){
        int count = 0;
        for (int i = 2; i <= 100; i++) {
            boolean flag = false;
            //网上有教程说这里的就j<i可以替换为j<Math.sqrt(i),试了下,替换后 会把4和9也打印出来
            //有大神路过的 帮忙解释下 O(∩_∩)O
            for (int j = 2; j < i; j++) {
                if (i%j==0){
                    flag= true;
                    break;
                }
            }
            if (!flag){
                System.out.print(i+"\t");
                count++;
            }
            if (count==5){
                System.out.println();
                count=0;
            }
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值