2017-08-14 1 views
-1

Der Versuch, einige Funktionen aus verschiedenen Klassen für eine Übung aufzurufen.Funktionen aus anderen Dateien aufrufen "Symbol kann nicht gefunden werden"

Man sagt uns, folgende Funktionsaufrufe zu verwenden,

MonthName.month_name(); 
WeekdayName.weekday_name(); 
MonthOffset.month_offset(); 
WeekdayCalculator.is_leap(); 

Als ich MonthName.month_name versucht(); Er sagt, es eine nicht statische Methode ist, es wie in unten gesehen infact eine statische Methode ist, sortierte ich, dass durch Aufruf wie,

MonthName monthObject = new MonthName(); 

Welche das Problem aussortiert. Aber jede andere Funktion, die ich anrufe, bekomme ich die msg es kann kein Symbol finden.

Die Klasse Ich versuche & Funktion der Klasse Dies ist

public class callingfunctionsfromotherfiles 



public static void main(String[] args) 
{ 
    // TODO code application logic here 

    Scanner scan = new Scanner(System.in); 
    String finalDate=""; 
    System.out.println("Pleaase enter your date of birth in this format dd mm yyyy"); 
    String dob=scan.nextLine(); // date of birth entered by the user 


    String d = dob.substring(0,2); //split the dob into 3 parts 
    String m = dob.substring(3, 5); 
    String y = dob.substring(6, 10); 

    int day = Integer.parseInt(d); //convert dob strings to int 
    int month = Integer.parseInt(m); 
    int year = Integer.parseInt(y); 
    MonthName monthObject = new MonthName(); 
// MonthName.month_name(month); non static??? 

System.out.println(finalDate= "You where born on " + week_day(day, month, year) +", " + monthObject.month_name(month) + ", "+ day + ", " + year); 

} 



public static String week_day(int day, int month, int year) // returns a string value for the week day with integer parameters of day,month,year 
    { 

     MonthOffset offsetObject = new MonthOffset(); //"Can't find symbol" 
     WeekDayCalculator leapObject = new WeekDayCalculator(); //"Can't find symbol" 
     WeekDayName wkdayObject = new WeekDayName(); //"Can't find symbol" 

    int yy = year - 1900; 
    int total = yy/4 + yy + day + offsetObject.month_offset(month); 
    // weekDayCalculator.month_offset(); 

    //WeekDayCalculator.is_leap(); 
    boolean leap = leapObject.is_leap(year); //pass "year" into the is_leap method which returns true or false 
    if(leap == true && month == 1 || month == 2) //if it is a leap year and the month == 1(january) 2(february) subtract 1 from the total 
    { 
     total-= -1; 
    } 


    total = total %7; //total is remainder of (total/7) 
    String finalDay = wkdayObject.weekday_name(total); // call weekday_name and pass in total, giving finalDay a string value from weekday_name 

    return finalDay; 




} 

in die Funktionen aufrufen, die funktioniert, wenn ich ein Objekt erstellen, aber sagt mir auch, die Funktion ist nicht statisch, wenn es wirklich ist.

public class monthname 
{ 
public static String month_name(int num) 

{ 
    String month =""; 

    if(num == 1) 
    { 
     month ="January"; 
    } 

    else if(num == 2) 
    { 
     month ="Feburary"; 
    } 

    else if(num == 3) 
    { 
     month ="March"; 
    } 

    else if(num == 4) 
    { 
     month ="April"; 
    } 

    else if(num == 5) 
    { 
     month ="May"; 
    } 

    else if(num == 6) 
    { 
     month ="June"; 
    } 

    else if(num == 7) 
    { 
     month ="July"; 
    } 

    else if(num == 8) 
    { 
     month ="August"; 
    } 

    else if(num == 9) 
    { 
     month ="September"; 
    } 

    else if(num == 10) 
    { 
     month ="October"; 
    } 

    else if(num == 11) 
    { 
     month ="November"; 
    } 

    else if(num == 12) 
    { 
     month ="December"; 
    } 

    else 
    { 
     month ="error"; 
    } 
    return month; 

} 
} 

Und das ist eine der Klassen & Funktionen, bei denen es nicht Symbol finden. Wird mehr posten wenn nötig.

public class monthoffset 
{ 
public static int month_offset(int month) 
{ 
    int offset =0; 

    if (month == 1) 
    { 
     offset=1; 
    } 
    else if (month == 2) 
    { 
     offset = 4; 
    } 
    else if (month == 3) 
    { 
     offset = 4; 
    } 
    else if (month == 4) 
    { 
     offset = 0; 
    } 
    else if (month == 5) 
    { 
     offset = 2; 
    } 
    else if (month == 6) 
    { 
     offset = 5; 
    } 
    else if (month == 7) 
    { 
     offset = 0; 
    } 
    else if (month == 8) 
    { 
     offset = 3; 
    } 
    else if (month == 9) 
    { 
     offset = 6; 
    } 
    else if (month == 10) 
    { 
     offset = 1; 
    } 
    else if (month == 11) 
    { 
     offset = 4; 
    } 
    else if(month ==12) 
    { 
     offset=6; 
    } 

    else 
    { 
     offset = -1; 
    } 


    return offset; 
} 

}

+0

Ich sehe nur einen Methodennamen 'month_name' in dem Code, den Sie gepostet haben. Und es ist in der Klasse 'monthoffset' und erfordert einen int-Parameter. Offensichtlich funktioniert 'MonthName.month_name()' nicht. –

+0

Bitte beachten Sie auch, dass Java Groß- und Kleinschreibung unterscheidet. 'monthoffset' und' MonthOffset' sind nicht dasselbe. –

+0

Ok ... beim Einfügen in meinen Code habe ich monthoffset anstelle von monthname als Klasse eingefügt, nicht so auf meine ide. Ich habe alles gelöscht und neu gestartet, immer noch das exakt gleiche Problem. Die Klassennamen sind jetzt genau so wie sie sind. –

Antwort

1

MonthOffset nicht monthoffset. Sie haben Syntaxfehler. Versuchen Sie, Eclipse oder IntelliJ zu verwenden, um Hilfe von einer IDE zu erhalten.

+0

Ok aber dann Warum MonthName(); arbeiten, wenn die Klasse der Monatsname ist? –

1

Es ist Syntaxfehler. Sie haben keine Klasse MonthOffset usw. Ändern Sie den Namen Ihrer Klasse von monthoffset in Monthoffset.

Konvention ist here.

+0

Aber ich kann die Funktion month_name() aus der Klasse monatsname mit Monatsname aufrufen monthObject = new MonthName(); –

+0

Vielleicht haben Sie andere Klassen mit korrektem Namen. IMO In erwähnten Code ist es nicht möglich. – Nequeq

Verwandte Themen