2015-10-06 73 views
0

我有一個有兩個類的程序,每個程序都有一個主要方法,我想知道是否可以從我的第二個類調用主要方法在我的第一個類中工作。我似乎無法找到任何有用的例子,這讓我認爲我無法做到自己想做的事。是否可以從已有主方法的類調用main方法?

頭等艙:

package scannerarrays; 

     import java.util.Scanner; 

      public class ScannerArrays { 



public static void main(String[] args) { 
    Scanner input = new Scanner (System.in); 
    String words; 
    int IDnum; 


    System.out.println("Enter your Name"); 
    words = input.nextLine(); 

    System.out.println("Enter your Surname"); 
    words = input.nextLine(); 

    System.out.println("Enter your ID number"); 
    IDnum = input.nextInt(); 

二等:

package scannerarrays; 

import java.util.Scanner; 

public class IdDetails { 


String id; 
int month[] = {31 , 29 , 31 , 30 , 31, 31 , 30 , 31 , 30 , 31}; 


public IdDetails() { 


    Scanner input = new Scanner(System.in); 
    System.out.println("Enter your ID number \nLike : 000000000V"); 
    id = input.next(); 



    } 

public int getYear() { 
    return(1900 + Integer.parseInt(id.substring(0, 2))); 

} 
    public int getDays() { 
    int d = Integer.parseInt(id.substring(2, 5)); 
    if (d > 500) { 
     return (d - 500); 
    }else{ 
     return d; 



    } 

    } 
public void setMonth() { 

    int mo = 0, da = 0; 
    int days = getDays(); 

    for (int i = 0; i < month.length; i++) { 
     if (days < month[i]) { 
      mo = i + 1; 
      da = days; 
      break; 

     }else{ 
      days = days - month[i]; 
     }   

     } 

    System.out.println("Month: " + mo + "\nDate : " + da); 

    } 

    public String getSex() { 
     String M = "Male" , F = "Female"; 
     int d = Integer.parseInt(id.substring(2 , 5)); 
     if (d>81) { 
      return F; 

     }else{ 
     return M; 
     } 

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

IdDetails ID = new IdDetails(); 
System.out.println("Your Details of DOB from ID"); 
System.out.println("Year : " + ID.getYear()); 
ID.setMonth(); 
System.out.println("Sex : " + ID.getSex()); 

     } 



    } 
+0

'公共靜態無效main(String [] args)'只是一種方法,就像所有其他方法一樣(當你讓它運行一個類時,JVM專門處理它) – MadProgrammer

+4

是的,你可以做到,但它會在這種情況下無法嘗試。最好創建一個更類似於「類OOP」的IdDetails類,其中沒有UI(用戶界面)代碼,並且可以在第一類中使用它。因此,讓Scanner脫離IdDetails類,給它一個體面的字段,一個真正的構造器(再次沒有Scanner),並讓其他類處理所有的UI代碼。 –

回答

2

主要方法是喜歡你的類的任何其他靜態方法,所以你可以把它以同樣的方式,就像:

IdDetails.main(); 

或與任意數量的字符串參數:

IdDetails.main("name", "surname", "12"); 

但是,這似乎有點混亂,要用這種方法在主要方法中使用邏輯。如果你真的需要這樣做,只需要使用固定輸入參數的另一種方法,並在需要的地方調用它(在這兩種主要方法的情況下)。

相關問題