is not applicable for the arguments

Status
Nicht offen für weitere Antworten.

exposed

Mitglied
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:

Java:
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
 
S

SlaterB

Gast
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

Mitglied
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
 
S

SlaterB

Gast
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

Mitglied
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
 
S

SlaterB

Gast
> 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

Mitglied
Java:
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
 
S

SlaterB

Gast
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

Bekanntes Mitglied
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
 
Status
Nicht offen für weitere Antworten.

Oben