先来公布一下昨天的解答吧,应该画一下图就知道为什麽要这样了,这里就不再说明,因为今天要讲解一个新的概念。
import java.util.Scanner;
public class Triangle {
public static void main(String[] argvs){
Scanner sc = new Scanner(System.in);
System.out.println("Please enter the edge of triangle.");
int n = sc.nextInt();
for(int i = 1 ; i <= n ; i++){
for(int j = 1 ; j <= n-i ; j++){
System.out.print(" ");
}
for(int j = 1 ; j <= (2*i-1) ; j++){
System.out.print("*");
}
System.out.println();
}
sc.close();
}
}
在处里一个大问题时,我们会将大问题切割成一个个小问题依依解决,这个做法称为 Divide and Conquer。在撰写程序的时候也是如此,我们会将程序包装成一个个「方法」(method),帮助我们模组化程序,这有助於我们设计和维护大型程序。
不知道你有没有想过,为什麽写程序前一定要打这两行呢:
public class CodeName {
public static void main(String[] argvs){
}
}
今天会让大家了解第二行代表的意思,第一行则还需要再等等。
main 是一个方法,从名字可知他是一个主要的方法,每一个程序一定都会有一个 main 方法。当你用 Java 命令执行 Java 虚拟机器(JVM)时,JVM 会试着呼叫你所指定之类别的 main 方法。
除了 main 方法,我们还可以自己写很多方法,写法如下:
存取叙述 static 传回值型态 方法名称(参数列){
statement;
return 运算式;
}
存取叙述:
static 这我们之後会再详细说明。
传回值型态:就如同之前介绍过的资料型态,你想要你的方法回传是什麽型态,若不需回传则传回值型态为 void。
方法名称:就和我们取变数名称一样,要取可读性高的名字。
参数列:此方法的传入值,可以不只一个,若无则为空。
return 运算式:此方法要回传的值,void 没有此项。
看完上面的说明,你可能还是雾沙沙,那我们直接来看范例吧!
public class Maximum {
public static void main(String[] args){
int num1 = 5;
int num2 = 7;
int num3 = 4;
myPrint();
System.out.println(maxNum(num1, num2, num3));
}
public static void myPrint(){
System.out.print("The maximum number is: ");
}
public static int maxNum(int a, int b, int c){
if(a > b){
if(a > c){
return a;
}
else{
return c;
}
}
else{
if(b > c){
return b;
}
else{
return c;
}
}
}
}
先看到第一个方法 myPrint(),他没有参数列,且他是一个回传值为空的方法,所以使用 void,且不需要 return。第二个方法是 maxNum(),他有三个传入值,且他的回传型态是 int,传回三数的最大值。
若我们今天呼叫的方法在别的类别里,就需要在方法前加上类别名称:类别名称.方法名称。像是之前有使用过的 sc.nextInt(),就是使用 Scanner 类别里的 nextInt() 方法,其实你早就认识他了,还有很多方法都很常使用,多多了解可以站在巨人的肩膀上写出更厉害的程序。
同一个类别中可以宣告多个同名的方法,只要这些参数列不同即可,以刚刚的例子来说,我可以宣告一个同名的 maxNum(),但因为参数列只有两个,所以程序还是可以判断你呼叫的是哪一个方法。
public class Maximum {
public static void main(String[] args){
int num1 = 5;
int num2 = 7;
int num3 = 4;
myPrint();
System.out.println(maxNum(num1, num2, num3));
System.out.println(maxNum(num1, maxNum(num2, num3)));
}
public static void myPrint(){
System.out.print("The maximum number is: ");
}
public static int maxNum(int a, int b, int c){
if(a > b){
if(a > c){
return a;
}
else{
return c;
}
}
else{
if(b > c){
return b;
}
else{
return c;
}
}
}
public static int maxNum(int a, int b){
if(a > b){
return a;
}
else{
return b;
}
}
}
今天的东西比较抽象一点,但这还只是个开始(什麽!?),我们快要踏进物件导向的魔爪里了,大家加油!
正如Day 04 - Spring Boot 的前世今生所说,Spring Boot 为了简化设定提...
同时开启多个浏览器 有时候可能需要多个浏览器来进行测试, 譬如说用多个浏览器来测试WebSocket...
试题反映理论 在试题反映理论(Item Response Theory, IRT)中 能用作因素来解...
-聚合功能 分区(Partitioning) 对数据或数据库进行分区是指将数据集分成多个部分并分别...
Day 23: 174. Dungeon Game Tag:每月挑战(2021.10.02) Sou...