2013-11-01 2 views
0

Я пытаюсь создать программу, которая включает в себя меню и будет выполнять любой выбор, который пользователь выбирает. Я завершил методы и получил их для компиляции, но я потерял, как вызвать классы. Вот код на скриншотах, поэтому они легче читать:Базовая Java: Как вызвать метод?

Geek Класс: (Содержит все методы)

public class Geek{ 
    private String name; 
    private int numberofQuestions=0; 

    public Geek (String name){ 
     this.name = name; 
     numberofQuestions = 0; 

    } 
    public String getName(){ 
     return name; 

    } 
    public int getnumberofQuestions(){ 
     return numberofQuestions; 
    } 
    public boolean allTheSame(int num1, int num2, int num3){ 

     numberofQuestions++; 
     if(num1 == num2 && num2 == num3 && num1 == num3){ 
      return true;} 
      else return false; 
     } 
    public int sum (int num1, int num2){ 
     numberofQuestions++; 
     int largest = Math.max(num1, num2); 
     int smallest = Math.min(num1, num2); 
     int result =0; 
     for (int i=smallest; i <= largest;i++){ 
     result = result + i;} 
     return result; 

    } 
    public String repeat(String str, int n){ 
     numberofQuestions++; 
     String repetition = ""; 
     for (int j=0; j < n; j++){ 
     repetition = repetition + str;} 
     return repetition; 

     } 


    public boolean isPalindrome(String str){ 
     numberofQuestions++; 
     int n = str.length(); 
     for(int i = 0; i < n/2; i++) 
     if (str.charAt(i) != str.charAt(n-i-1)) return false; 
    return true; 
    } 

} 

Главная:

http://i.imgur.com/DvJ0LU5.png

EDIT : Im получение a не может найти ошибку символа в этом разделе кода:

case "d": 
     myGeek.sum(num1, num2, num3); 
     System.out.println("Enter the first number"); 
     int num1 = scan.nextInt(); 
     System.out.println("Enter the second number"); 
     int num2 = scan.nextInt(); 
     System.out.println("Enter the third number"); 
     int num3 = scan.nextInt(); 
     break; 
+0

Определите «вызов классов». У вас возникли проблемы с запуском программы после ее компиляции? – Gimby

+0

Существует проблема с вопросом, когда вы еще не знаете терминологию: вы не можете «вызывать классы», вы можете вызывать только методы, которые определены в классах, и связаны с объектами (если они не являются static, то они связаны с отдельными классами). Можете ли вы перефразировать свой вопрос, чтобы использовать правильную терминологию java? –

+0

Вы не называете классы. Создать main() - вы можете сделать это в том же классе. Затем создайте объект класса. Затем вызовите методы, используя obj.method(). –

ответ

0

Необходимо использовать экземпляр класса для его использования.

Например, в основной метод, вы можете определить экземпляр объекта следующим образом:

Geek myGeek = new Geek("user2943817"); 

Вы можете чем получить доступ ко всем методы экземпляра на объекте, используя имя переменной, как так:

myGeek.getName(); 

Надеюсь, это поможет!

EDIT:

Что касается вашего нового вопроса, просто вызовите метод после получения значений от пользователя. Например:

case "d": 
    System.out.println("Enter the first number"); 
    int num1 = scan.nextInt(); 
    System.out.println("Enter the second number"); 
    int num2 = scan.nextInt(); 
    System.out.println("Enter the third number"); 
    int num3 = scan.nextInt(); 
    myGeek.sum(num1, num2, num3); 
    break; 
+0

Спасибо за помощь! Можете ли вы проверить новую ошибку, которую я получаю? – user2943817

1

В Java (и любых других языках, которые я знаю), вы можете вызывать только методы/функции, но не классы (кроме того, что вы считаете <clinit>). Таким образом, вы могли бы написать:

Geek geek = new Geek("Me"); 
int i = geek.sum(1, 2); 
System.out.println(String.valueOf(i)); 

Предполагая, что файл Geek.java, вы можете вызов/запустить класс, используя:

javac Geek.java 
java Geek 

из командной строки.

Обратите внимание, что это будет выполнено только в том случае, если Geek.java содержит основной метод. Читайте о них here.

+0

Спасибо за помощь! Можете ли вы проверить новую ошибку, которую я получаю? – user2943817

+0

@ user2943817: Конечно, можете ли вы опубликовать весь класс, который вы пытаетесь запустить? – tilpner

2

Классы не называются, они представляют собой чертежи для создания объектов.

Вам нужна точка входа в программу, в этом случае в вашем классе, как так

public static void main(String[] args) 
{ 
    Geek myGeekObject = new Geek("Your name"); 
} 

, то вы можете вызывать методы на ваш созданный объект

public static void main(String[] args) 
{ 
    Geek myGeekObject = new Geek("Your name"); 
    String geekName = myGeekObject.getName(); 
} 
+0

Спасибо за помощь! Можете ли вы проверить новую ошибку, которую я получаю? – user2943817

0

Вы не можете использовать не статический класс как это.

Представьте, что Geek - это определение Geek. Вы хотите создать несколько вундеркиндов, каждый из которых является автономным экземпляром.

Geek g1 = new Geek("Andrew"); 
Geek g2 = new Geek("John"); 

Эти строки создают два экземпляра g1 и g2 типа Geek с именем Andrew и John

Затем вы обращаетесь к ним так:

g1.repeat("myString", 10) 
1

Вам нужно создать экземпляр объекта, а затем вы можете использовать его

Например:

Geek g = new Geek("Geek"); 
g.getName(); 
Смежные вопросы