# is not applicable for the arguments



## exposed (25. Jun 2009)

hallo bin neu hier und noch etwas unbeholfen mit java.

folgender code sollte eigentlich einen Wochentag ausgeben, der Compiler gibt mir aber für 2 Methoden die Meldung:
The method calcDays(int, int, int) in the type wochentagberechnung is not applicable for the arguments ()
	The method calcWeekDay(int) in the type wochentagberechnung is not applicable for the arguments ()

mein code:


```
currentPost.edit();

import java.util.*;
import java.io.*;

public class wochentagberechnung  {
	
	

	public static void gui(){
		
		System.out.println("________________________________________________");
		System.out.println("|                                               |");
		System.out.println("|   Wochentagsberechnung                        |");
		System.out.println("|   Sprechen Sie Java, S. 53                    |");
		System.out.println("|_______________________________________________|");
		System.out.println();
		System.out.println("    Bitte geben Sie ein Datum ein: (JJJJ M D");
	}
	
	public static void readDate(){
		
		int a=0;
		int b=0;
		int c=0;
		
		BufferedReader in = new BufferedReader (
		new InputStreamReader (System.in));
		
		try{
			String input =in.readLine();
			StringTokenizer tokens = new StringTokenizer (input);
			c = Integer.parseInt(tokens.nextToken());
		 	b = Integer.parseInt(tokens.nextToken());
		 	a = Integer.parseInt(tokens.nextToken());}
		catch (Exception e){System.out.println ("e");}
		plausibilitätsprüfungS53.dateOutput(a,b,c);
		
		
	}
	
	
	
	public static void calcDays(int a,int b,int c){
	 
	 
	 GregorianCalendar today = new GregorianCalendar(2009, 6, 21);  
	 GregorianCalendar past = new GregorianCalendar(c, b, a);
	 long difference = today.getTimeInMillis() - past.getTimeInMillis();
	 int days = (int)(difference / (1000 * 60 * 60 * 24));  
	 
	 
	}
	
	public static void calcWeekDay(int days){
		
		float weekDay = days%7;
		
		if(weekDay == 0.142){ System.out.println("Montag");}
		if(weekDay == 0.285){ System.out.println("Dienstag");}
		if(weekDay == 0.428){ System.out.println("Mitwoch");}
		if(weekDay == 0.571) {System.out.println("Donnerstag");}
		if(weekDay ==0.714) {System.out.println("Freitag");}
		if (weekDay == 0.857){ System.out.println("Samstag");}
		if(weekDay == 0){System.out.println("Sonntag");}
		
	}

	
	
	public static void main(String[] args) {
		
		gui();
		readDate();
		calcDays( );
		calcWeekDay();
```


bin für jede anregung und idee dankbar
peace


----------



## SlaterB (25. Jun 2009)

readDate() befüllt 3 Variablen a, b, c
diese enthalten Informationen, das Jahr usw.,

calcDays(..) ist eine andere Methode und möchte diese Werte auch haben,
magisch verteilt wird in Java recht wenig, der Aufruf lautet also z.B. calcDays(a,b,c);

von der main-Methode ist es recht schwer, erst die drei ints aus readDate() zurückzubekommen und dann weiterzureichen,
einfacher wäre es,  calcDays(a,b,c); direkt in readData() auszuführen

innerhalb von  calcDays(a,b,c); wird wiederum eine Variable int days berechet, der ideale Parameter für den Aufruf von calcWeekDay(int days)


----------



## exposed (25. Jun 2009)

hab das ausprobiert, jetzt meckert er nur noch bei calcWeekDay(days)

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	days cannot be resolved


bzw calcWeekDay()

not applicable for the arguments


----------



## SlaterB (25. Jun 2009)

hab ich auch schon beantwortet, siehe letzten Satz, der natürlich auch andeutete, dass 
calcWeekDay(days);
am Ende der Methode calcDays(a,b,c); stehen sollte,

wenn du aber gar keine Grundlagen verstehst, was bringt dir dann diese Korrektur einzelner Befehle?


----------



## exposed (25. Jun 2009)

wenn ich calcWeekDay einfach in der methode calcDays anfüge, dann muß ich calcDays in der main-methode ausführen um eine bildschirmausgabe zu erhalten aber dann hab ich dasselbe problem:

calcDays(a,b,c) => a,b,c cannot be resolved
calcDays()       =>not applicable for the arguments


----------



## SlaterB (25. Jun 2009)

> wenn ich calcWeekDay einfach in der methode calcDays anfüge, dann muß ich calcDays in der main-methode ausführen um eine bildschirmausgabe zu erhalten

diesem Argument kann ich so nicht folgen, kannst du das näher begründen?
nochmal:
calcDays(a,b,c); in Zeile 38,
calcWeekDay(days); in Zeile 51 in obigen Code


----------



## exposed (25. Jun 2009)

```
public static void readDate(){
		
		int a=0;
		int b=0;
		int c=0;
		
		BufferedReader in = new BufferedReader (
		new InputStreamReader (System.in));
		
		try{
			String input =in.readLine();
			StringTokenizer tokens = new StringTokenizer (input);
			c = Integer.parseInt(tokens.nextToken());
		 	b = Integer.parseInt(tokens.nextToken());
		 	a = Integer.parseInt(tokens.nextToken());}
		catch (Exception e){System.out.println ("e");}
		plausibilitätsprüfungS53.dateOutput(a,b,c);
		
		calcDays( a,b,c);
		
		
	}
	
	
	
	public static void calcDays(int a,int b,int c){
	 
	 
	 GregorianCalendar today = new GregorianCalendar(2009, 6, 21);  
	 GregorianCalendar past = new GregorianCalendar(c, b, a);
	 long difference = today.getTimeInMillis() - past.getTimeInMillis();
	 int days = (int)(difference / (1000 * 60 * 60 * 24)); 
	 
	 calcWeekDay(days);
	 
	 
	}
	
	public static void calcWeekDay(int days){
		
		float weekDay = days%7;
		
		if(weekDay == 0.142){ System.out.println("Montag");}
		if(weekDay == 0.285){ System.out.println("Dienstag");}
		if(weekDay == 0.428){ System.out.println("Mitwoch");}
		if(weekDay == 0.571) {System.out.println("Donnerstag");}
		if(weekDay ==0.714) {System.out.println("Freitag");}
		if (weekDay == 0.857){ System.out.println("Samstag");}
		if(weekDay == 0){System.out.println("Sonntag");}
		
	}

	
	
	public static void main(String[] args) {
		
		gui();
		readDate();
		
		
		
		
	
	}

}
```


wie geb ich jetzt den errechneten wochentag auf der console aus? es wird ja die methode calcWeekDay nicht mehr ausgeführt. wenn ich sie in der main ausführe meckert der compiler egal ob mit argumenten oder ohne


----------



## SlaterB (25. Jun 2009)

die Methode calcWeekDay(int days) ist doch bisher so aufgebaut, dass sie selber die Ausgabe macht, 
siehst du die ganzen System.out.println?

die Vergleiche 
> if(weekDay == 0.142){
usw. machen allerdings wenig Sinn, das sollte besser == 0, == 1, == 2 usw. heißen

oder kurz ohne if:
System.out.println("tag ist: "+weekDay);


----------



## FatFire (26. Jun 2009)

Hm, was SlaterB Dir zu erklären versucht, steht z.B. auch sehr gut erklärt hier und hier.
Zudem gibt es für die Aufgaben, die Du dort bearbeitest hier auch die Musterlösungen (Du machst ja gerade Aufgabe 9). Wenn Du partout nicht weiter weisst, einfach mal reinlinsen und schauen wie es dort gemacht wird. Das soll nicht heissen, dass Du hier nicht fragen darfst, Gott bewahre, aber wenn einer schon ein Buch hat, in dem die Grundlagen drin stehen und dann hier trotzdem noch einmal die Grundlagen erklärt haben will (und Sichtbarkeit, Lebensdauer, sowie Übergabe von Variablen sind absolut niedrigste Grundlagen), dann ist das mitunter für die freiwilligen Helfer hier sehr anstrengend.

Gruß FatFire


----------

