2013-08-21 98 views
1

我在一個需要將值從主類傳遞給其他類的項目。所有課程都具有主要功能時正確工作。但是,我的項目應該只有一個主類在其他類中調用其他函數。將主類中的值傳遞給Java中的其他類

主要和另一個類的示例如下。我想通過主類掃描輸入並將其傳遞給解析類。當前實現給出了兩個錯誤,分別是:

Exception in thread "main" java.lang.NullPointerException 
    at url.checker.Parse.GetInput(Parse.java:16) 
    at url.checker.Main.main(Main.java:14) 
Java Result: 1 

給定的輸入:-url = google.com, - 時間= 5,-email = asdfg @ hotmail.com

Main.java:

package url.checker; 

    import java.util.Scanner; 

     public class Main { 

      public static void main(String[] args) 
      { 


      Scanner in = new Scanner(System.in); 
      System.out.println("Enter the parameters as '-url=' , '-time=' , '-email='."); 
      Parse.s = in.nextLine(); 
      Parse.GetInput(Parse.s); 
      } 
     } 

Parse.java:

 package url.checker; 
     import java.util.Scanner; 

     public class Parse 
     { 
      static String s; 
      static String result[]; 

      public static void GetInput(String s) 
      { 
      int i; 

      for(i=0;i<3;i++) 
      { 
       if (s.startsWith("-url=")) 
       result[0] = s.substring(5, s.length()); 
       else if (s.startsWith("-time=")) 
       result[1] = s.substring(6, s.length()); 
       else if (s.startsWith("-email=")) 
       result[2] = s.substring(7, s.length()); 
       else 
       System.out.println("You didn't give any input."); 
      } 
      } 
     } 

非常感謝您的幫助。

+1

請!格式化您的代碼! – MrSmith42

+0

你可以改變'Parse.s = in.nextLine(); Parse.GetInput(Parse.s);'''Parse.GetInput(in.nextLine());'如果你想刪除一個冗餘步驟。還有更好的方法來做你想做的事情,即使你的方式在更改代碼時也能正常工作,就像答案中所解釋的那樣。提示,創建一個'Parse'對象並使用它來代替靜態的一切。 – Qben

+0

在java中(以及在編程中)沒有這樣的東西。這是一個調試我的代碼,對遺產沒用。說它是唯一可以調用其他方法的類也是無稽之談。誰分配給你這些任務? – Val

回答

2
static String result[]; 

您從未初始化數組;由於它是靜態的,因此它默認初始化爲null

使用static String[] strings = new String[10];進行初始化。這將持有String的10個元素。

+0

我編輯了你的答案來完成代碼,希望你不介意:) –

+0

欣賞它。謝謝。 – rocketboy

+0

你的意思是說這和Main類沒什麼關係? – Val

相關問題