方法的概念与创建
方法(method),简单来说,方法就是java语言里的一个特定代码块,它可以执行特定的功能,我们通过对一个方法的创建与设计,然后通过反复调用这个方法,来解决代码编程中,一个重复功能的简化使用,方法的创建,能够大大的减少我们的代码量啊,其实Java的方法在C语言里叫做函数,不过就是换了个名字而已。
方法的格式
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 ....){
方法体;
return 返回值;
}
(1): 修饰符 比较多,后面会详细介绍。目前使用 public static
(2): 返回值类型 用于限定返回值的数据类型
(3): 方法名 就是一个名称,它的存在是为了方便我们调用方法
(4): 参数类型 限定调用方法时传入参数的数据类型
(5): 参数名 是一个变量,接收调用方法时传入的参数
这个参数其实有一个专业的名词,被称之为形式参数,它的作用是用来接收实际参数的.
(6): 方法体 完成功能的代码
(7): return 结束方法以及返回方法指定类型的值
(8): 返回值 就是功能的结果,由return带回,带回给调用者
其实在之前我们编程一直有接触过方法的,不过它是方法中的老大,叫做主方法,我们来看一下:
public class practice1{
public static void main(String[] args) {//这行代码表示的就是主方法 这个main就是主方法的名称
Scanner sc = new Scanner(System.in);
for (int j = 0; j <100000 ; j++) {
System.out.println("请输入一个数对它进行3的取余");
long i = sc.nextInt();
//调用方法
QuYu(i);
System.out.println("余数是"+QuYu(i));}
}
private static long QuYu(long i) {这是我们创建的新方法,我们可以在主方法里调用这个方法
long y=i%3;
return y;
}
}
使用方法我们需要注意的几个要点:
A:方法不调用不执行
B: 方法与方法是平级关系,不能嵌套定义
C: 方法定义的时候参数之间用逗号隔开
D: 方法调用的时候不用在传递数据类型
E: 如果方法有明确的返回值,一定要由return带回一个值
这些就是我们在使用方法时需要注意的几点。另外,我们还需要知道一个关于方法的重要知识,那就是方法重载,方法重载:名字看着很专业的样子,其实内容很简单,方法重载指的就是我们在给方法命名的时候可以给多个方法命名同一个名字,但是要通过不同的参数类型或者参数个数来区分不同的方法
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for (int j = 0; j < 100000; j++) {
System.out.println("请输入一个数对它进行3的取余");
int i = sc.nextInt();
int b = sc.nextInt();
//调用方法
QuYu(i);
System.out.println("余数是" + QuYu(i));
}
}
private static long QuYu(long i, long b) {
long y = i % 3 + b;
return y;
}
private static long QuYu(long i) {
long y = i % 3;
return y;
}
private static int QuYu(int i) {
int y = i % 3;
return y;
}
}
如上我定义了三个方法,我使用的方法名都是QuYu但是,我通过让形式参数的数据类型不同和参数个数不同来区分。这可以理解为同一个方法,它可以用同样的方法来处理不同的数据,使得方法的适用度更高;
循环结构的重要语句
for循环语句
我们知道程序的结构有三种:顺序结构,选择分支结构(if else、switch),循环结构(for 、while、do while)其中循环结构语句是我们设计多次重复操作的程序的好工具;什么时候用循环?当我们发现程序设计中需要对同一种操作重复进行如果单一的进行重复输出繁琐且复杂,这个时候我们就需要来用循环来解决这个 问题;循环的使用能让我们感受到计算机编程语言的快乐啊;
循环结构for语句的格式:
for(初始化表达式语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程:
a:执行初始化表达式语句
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到B继续。
while循环语句
循环结构while语句的格式:
while(判断条件语句) {
循环体语句;
}
执行流程:
a:执行初始化条件语句;
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到b继续。
do while 循环语句
循环结构do…while语句的格式:
do {
循环体语句;
}while(判断条件语句);
执行流程:
a:执行初始化条件语句;
b:执行循环体语句;
c:执行控制条件语句;
d:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
e:回到b继续。
问题:请你计算从数字101到n的积
for循环实现
import java.util.Scanner;
class practice2 {
public static void main(String[] args) {
Scanner jc = new Scanner(System.in);
System.out.println("请规定101到N的整数");
long x = jc.nextInt();
System.out.println(add(x));
}
private static long add(long x) {
long num=1;
for (int i = 101; i < x; i++) {
num =i*num;
}
return num;
}
}
while 循环实现
import java.util.Scanner;
class practice2 {
public static void main(String[] args) {
Scanner jc = new Scanner(System.in);
System.out.println("请规定101到N的整数");
long x = jc.nextInt();
System.out.println(add(x));
}
private static long add(long x) {
long num=1;
int i=101;
while (i<x){
num =i*num;
i++;
}
return num;
}
}
do while 循环实现
import java.util.Scanner;
class practice2 {
public static void main(String[] args) {
Scanner jc = new Scanner(System.in);
System.out.println("请规定101到N的整数");
long x = jc.nextInt();
System.out.println(add(x));
}
private static long add(long x) {
long num=1;
int i=101;
do{
num =i*num;
i++;
}
while (i<x);
return num;
}
}
循环当然还可以嵌套使用(就是循环里面有循环,类似于盖中盖之类的哈)
问题来啦:要求我们在控制台输出m层用0组成的金字塔型
这样什儿的!很简单我们只需要将for循环语句嵌套使用下就可以了,但首先我们得清楚金字塔的组成规则,不难看出,如果我们想要组成一个金字塔型,就拿简单的来说,两层金字塔,它需要有三列,第一行是空格+0+空格,我们可以先把它看成是一个由空格和0组成的矩形,而且它的行数和列数总是N和2N-1,在这里,我们还需要知道什么时候输出空格,什么时候输出0,这里需要一个选择条件,我们大可以用if语句来进行选择,我们观察金字塔的每一列的规律不难看出,我们记0的位置为 j ,且当前0所在列数为 i , 那么每一列空格的位置都满足 N-(i-1)<=j&&j<=N+(i-1),好了,我们得到这些规律后就可以进行快乐的嵌套了;
package boketest;
import java.util.Scanner;
class test1 {
public static void main(String[] args) {
Scanner jc = new Scanner(System.in);
System.out.println("请输入层数");
int x = jc.nextInt();
sanjia(x);
}
private static void sanjia(int x) {
for (int i = 1; i <=x ; i++) {
for (int j = 1; j <=2*x-1 ; j++) {
if(j>=x-(i-1)&&j<=x+(i-1)){
System.out.print(0);
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
输出结果如下:
很好!你已经完成了这个任务,其实循环语句还可以执行更为复杂的逻辑,但这需要你有着扎实的基础,我们可以通过多多练习就可以完成,例如上代码,如果我们想让金字塔倒着输出我们该如何去做呢?
import java.util.Scanner;
class test1 {
public static void main(String[] args) {
Scanner jc = new Scanner(System.in);
System.out.println("请输入层数");
int x = jc.nextInt();
sanjia(x);
}
private static void sanjia(int x) {
for (int i = 1; i <=x ; i++) {
for (int j = 1; j <=2*x-1 ; j++) {
if(j>=x-(x-i)&&j<=x+(x-i)){
System.out.print(0);
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
输出结果:
我们只需要改动小小的逻辑即可,神奇吧!那好了,基本循环语句这块的内容就结束了,再见!