2012-11-24 10 views
6

Jestem nowy w programowaniu, przepraszam, jeśli to głupi błąd, ale ciągle dostaję ten błąd "CompanyAddress.java:11: error: cannot find symbol System.out.println(testObject.getName(CompanyName));" Nie wiem, kim jestem robić źle.Nie mogę uzyskać tego do pracy, metody i zmienne instancji

Główna.

import java.util.Scanner; 
public class CompanyAddress 
{ 
    public static void main(String[] args) 
    { 
    Scanner scan = new Scanner(System.in); 
    test testObject = new test(); 
    System.out.println("Enter name: "); 
    String input = scan.nextLine(); 
    testObject.getName(input); 
    System.out.println(testObject.getName(CompanyName)); 
    } 
} 

mój test.java

import java.util.Scanner; 
public class test 
{ 
    String Name; 

    public String getName(String CompanyName) 
    { 
     Name = CompanyName; 
     return Name; 
    } 


} 
+6

Komentarz bok. Jedną z konwencji nazewniczych powszechnie stosowanych w Javie jest to, że nazwy zmiennych powinny zaczynać się od małych liter. – fivedigit

Odpowiedz

2

Przede wszystkim trzeba zadeklarować zmienną companyName, przed przekazaniem go do swojej metody.

drugie metoda: -

public String getName(String CompanyName) 
{ 
    Name = CompanyName; 
    return Name; 
} 

Wydaje mi się dziwne. Używasz tej samej metody co getter and setter.

Trzeba separate setter and getter: -

public void setName(String companyName) { 
    name = companyName; 
} 

public String getName() { 
    return name; 
} 

i wywołać je oddzielnie.

testObject.setName(companyName); 

System.out.println(testObject.getName()); 

tylko sugestia: -

Naming Convention Obserwuj Java. Nazwy pól i nazwy metod powinny zaczynać się od małych liter alfabetu.

+0

@Dvvovator .. Proszę o komentarz, ponieważ nie sądzę, jaki jest twój zamiar za downvoting. –

+0

Przegłosowałem, ponieważ jest to najlepsza jak dotąd odpowiedź. Oprócz odpowiedzi na pytanie OP, dodałeś także kilka dobrych rad, które z przykładów kodu PO były potrzebne. –

+0

+1 pokonałeś mnie kilka minut .. :-) perfekcyjna odpowiedź –

3

Musisz zadeklarować zmienną CompanyName. Coś takiego:

String CompanyName = "CompanyName1"; 
System.out.println(testObject.getName(CompanyName)); 

Ponieważ jesteś modyfikacji zmiennej należy zrobić:

public class test 
{ 
     String Name; 

     public void setName(String CompanyName) {this.Name = CompanyName;} 

     public String getName()     {return Name;} 

}

Sposób getName zwróci nazwę „Spółka”, a setName zmodyfikuje nazwa "Firma". W ten sposób możesz rozdzielić różne problemy.

Ponadto w przyszłości można wywołać metodę getName bez zmiany faktycznej nazwy firmy.

3
System.out.println(testObject.getName(CompanyName)); 

Co tutaj jest CompanyName? Nie jest to symbol znany. To może być System.out.println(testObject.getName("CompanyName"));

lub

String CompanyName ="name"; 
System.out.println(testObject.getName(CompanyName); 
+0

proszę skomentować dla downvote ... –

0

Zmień nazwę „getName do "ustawNazwe"(ponieważ jest to seter) i dodać odpowiednią getter do swojej klasy i użyć tego:

public class test 
{ 
    String Name; 

    public void setName(String CompanyName) 
    { 
     Name = CompanyName; 
    } 

    public String getName() { 
     return Name; 
    } 
} 

następnie:

System.out.println(testObject.getName()); 


także , pomoże ci, jeśli zastosujesz się do standardowych konwencji nazewnictwa:

  • Nazwy klas start z dużej litery
  • metodzie zmiennych i parametrów nazwy zaczynają się od małej litery
1

Chyba wamt swój program, aby zrobić coś jak poniżej. Funkcja setName(), która ustawi przekazaną wartość na nazwę i jedną , która zwróci wartość nazwy.

import java.util.Scanner; 
public class test 
{ 
    String Name; 

    public String getName() 
    { 
     return Name; 
    } 

    public String setName(String companyName) 
    { 
     this.Name=companyName; 
    } 
} 

Teraz

public class CompanyAddress 
{ 
    public static void main(String[] args) 
    { 
    Scanner scan = new Scanner(System.in); 
    test testObject = new test(); 
    System.out.println("Enter name: "); 
    String input = scan.nextLine(); 
    testObject.setName(input); 
    System.out.println(testObject.getName()); 
    } 
} 
+0

Każdy, jeśli myślisz, że musisz poprawić formatowanie/pisownię. Zapraszam do edycji. M na telefonie. Cand robi wiele na temat formatowania. z góry dzięki –

+0

Jest całkiem przyzwoicie :). – dreamcrash

+0

@dreamcrash thankyou i dzięki za edycję (y) –