刚开始学 如果您感觉方法或者过程有不对的地方 欢迎提出 小白好借鉴 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;
}
}
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