2016-02-13 90 views
0

我是一個新的編碼器,我遇到了一些麻煩與我的方法。我做了一些,但他們沒有在主要方法中被發現。 (P.S我還沒有填補大部分方法,因爲我想先解決這個問題。) 謝謝大家。問題與識別方法

package area; 
    import java.util.*; 

    /** 
     * 
     * @author domendes 
     */ 

    public class Area { 


     public static void main(String[] args) { 
      Scanner kbdln = new Scanner(System.in); 
      System.out.println("Welcome to the area calculating code! Which shape would you like to calculate the area of?"); 
      System.out.println("Press 1 for a Triangle, 2 for a Circle, 3 for a Rectangle, and 0 to quit."); 
      int request = kbdln.nextInt(); 
      if (request == 1) { 
       areaTriangle(); 
      } else { 
       if (request == 2) { 
        areaCircle(); 
       } else { 
        if (request == 3) { 
         areaRectangle(); 
        } else { 
         if (request < 1) { 
          System.out.println("Goodbye"); 
          return; 
         } 
        } 
       } 
      } 

     } 

    } 

    public static void areaTriangle() { 
     Scanner kbdln = new Scanner(System.in); 
     System.out.println("Welcome to the Tirangle area cacluator. Enter in the height of your triangle"); 
     double triBase = kbdln.nextDouble(); 
    } 


    public static void areaCircle() { 

    } 

    public static void areaRectangle() {} 

    } 
+0

你是什麼意思類的任何對象通過「在主類中未檢測到?」你得到了什麼確切的錯誤,以及它們在代碼中的位置? (用註釋標記行)你在你的代碼示例中缺少一個右括號('}'),並且不清楚這是你原始代碼中的錯誤還是創建問題。 – millimoose

+1

你是否收到任何錯誤信息,或者它只是沒有做任何事情?如果沒有,則在這些空方法中拋出'System.out.println(「area such and method」);'看看它們是否被執行。 –

回答

0

在Java中,一切都是一個對象。所以你創建的方法實際上屬於你的類Area的方法。如果你想訪問它們,你必須使用Area類來引用它們。

既然你已經創建了static方法(這意味着你的方法是在類級別而不是對象的水平。你應該多看它)。您可以使用classname.methodname訪問它們。你的情況是Area.areaTriangle()

+0

如果'static'方法與OP代碼示例中的類相同,則不需要使用類名稱:https://ideone.com/op0jer(代碼示例可能不好,但是這似乎並沒有回答這個問題。) – millimoose

+0

我知道,但我不想把這個概念與基本概念混淆。歐普似乎與基本概念,所以我希望把在'ELI5' –

+0

很好地掙扎,在OP來到這裏與他們溝通沒有很好的問題,因爲他們的問題的代碼不編譯。我想指出的是,在問題不那麼糟糕之前,沒有辦法知道這是正確的答案。基本上,你正在解決你希望OP的問題,但不知道他們是否做。 – millimoose

0

你的if/else語句結構不佳的。第一條語句應該是if,以下是各的說法應該是elseif和最後一個應該是else。然而,在這種情況下,switch語句將是最好的

switch(request){ 
    case 1: 
     areaTriangle(); 
     break; 
    case 2: 
     areaCircle(); 
     break; 
    case 3: 
     areaRectangle(); 
     break; 
    default: 
     System.out.println("Goodbye"); 
} 
+0

@ cricket_007 woops謝謝你。使用複製/粘貼來節省時間並忘記返回並更改值。 –

0

沒有在main方法

主要方法是靜態的背景下,這意味着如果你想被發現,他們例如,從Area類之外調用這些方法,您將不得不執行Area.areaTriangle()

或者,你可以定義一個類AreaPrompter,這將是像這樣。

然後,如果你想使用的任何其他類的方法,你可以做

AreaPrompter prompter = new AreaPrompter(); 
prompter.whateverMethodNameHere(); 

public class AreaPrompter { 

    public static void main(String[] args) { 
     AreaPrompter prompter = new AreaPrompter(); 
     // main method 
     prompter.run(); 

     // just the triangle method 
     prompter.areaTriangle(); 
    } 

    public void run() { 
     Scanner kbdln = new Scanner(System.in); 

     System.out.println("Welcome to the area calculating code! Which shape would you like to calculate the area of?"); 
     System.out.println("Press 1 for a Triangle, 2 for a Circle, 3 for a Rectangle, and 0 to quit."); 
     int request = kbdln.nextInt(); 

     if (request <= 0) { 
      System.out.println("Goodbye"); 
      return; 
     } else if (request == 1) { 
      areaTriangle(); 
     } else if (request == 2) { 
      areaCircle(); 
     } else if (request == 3) { 
      areaRectangle(); 
     } 
    } 

    public void areaTriangle() { 
     Scanner kbdln = new Scanner(System.in); 
     System.out.println("Welcome to the Tirangle area cacluator. Enter in the height of your triangle"); 
     double triBase = kbdln.nextDouble(); 
    } 


    public void areaCircle() { } 

    public void areaRectangle() { } 

} 
0
public static void main(String [] args){ 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Press 1 for a Triangle, 2 for a Circle, 3 for a Rectangle, and 0 to quit." 
int num = sc.nextInt(); 
    if(num == 1){ 
    areaTriangle(); 
    }else if(num == 2){ 
    areaCirlce(); 
    }else if(num == 3){ 
    areaRectangle(); 
    else{ 
     System.out.println("GoodBye"); 
    } 

沒有什麼錯,你打電話,因爲你的方法方式主要方法是static,你可以直接調用static方法,而無需使用等