Methoden verknüpfen

Jannis96

Mitglied
Guten Tag,

ich habe mein Programm in einige Methoden unterteilt. Nun läuft bei mir die erste Methode durch aber die 2. wird nicht mehr angewendet und gibt auch keine ergebnisse aus... wo liegt der Fehler??


Also die "public static void main" wird verarbeitet aber "public static void auslesen" nicht mher...

Java:
import java.io.*;
import java.text.DateFormat;
import java.util.Date;
import java.util.GregorianCalendar; 
import java.net.URL;
import java.util.Scanner;
import java.net.URL;

public class beni{
  public static void main(String[] args) throws IOException {
    
    System.out.println(" Für welche Tankstelle möchten Sie die Preise wissen? ");
    System.out.println(" ");
    System.out.println(" 01 - HEM - Ort1");
    System.out.println(" ");
    System.out.println(" 02 - HEM - Ort2");
    System.out.println(" ");
    System.out.println(" 03 - ARAL - Ort3");
    System.out.println(" ");
    System.out.println(" Angaben ohne gewähr");
    System.out.println(" ");
    double tanke = InOut.readDouble(" Bitte Auswahl angeben: "); 
   
    // HTML auslesen
    
    double zeile = 0;
    String xx = "null";
    
    PrintWriter htmlWriter = null;
    try {
      htmlWriter = new PrintWriter(new BufferedWriter(new FileWriter("HTML.txt")));
      //                 Clever-Tanken ID
      if (tanke == 01 || tanke == 1 ) {    //Halchter
        URL url = new URL("http://www.clever-tanken.de/tankstelle_details/xxxx"); 
        BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        while((line=r.readLine())!=null) 
        htmlWriter.println(line)  ;
        zeile = 229;
        xx = "Halchter";
      } // end of if
      
      if (tanke == 02 || tanke == 2 ) {     //Schladen
        URL url = new URL("http://www.clever-tanken.de/tankstelle_details/xxxx");
        BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        while((line=r.readLine())!=null) 
        htmlWriter.println(line)  ;
        zeile = 229;
        xx = "Schladen";
      } // end of if
      
      if (tanke == 03 || tanke == 3 ) {     //Floethe
        URL url = new URL("http://www.clever-tanken.de/tankstelle_details/xxxx");
        BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        while((line=r.readLine())!=null) 
        htmlWriter.println(line)  ;
        zeile = 227;
        xx = "Floethe";
      } // end of if
      
    } catch (IOException ioe) {
      ioe.printStackTrace();
    } finally {
      if (htmlWriter != null){
        htmlWriter.flush();
        htmlWriter.close();
      }
    } 
    
  } 
  
  public static void auslesen (String xx, double zeile) throws IOException{
    
    // Zeile auslesen  
    
    FileReader html = new FileReader("HTML.txt");
    BufferedReader br = new BufferedReader(html);
    
    String dieselhtml =br.readLine();
    int dieselzahl = 0;
    while (dieselzahl <= zeile) {
      
      dieselhtml = br.readLine();
      
      dieselzahl++;
    } // end of while
    
    String benzinhtml =br.readLine();
    int benzinzahl = 0;
    while (benzinzahl <= 14) {  
      
      benzinhtml = br.readLine();
      
      benzinzahl++;
    } // end of while 
    
    //Benzin auslesen
    
    System.out.println("");
    System.out.println(" " + xx);
    System.out.println(" _______________");
    System.out.println(" Super");
    System.out.println("");
    
    String benzinpreis = benzinhtml;
    String[] bparts = benzinpreis.split("'");
    String part1benzin = bparts[0]; 
    String part2benzin = bparts[1];
    
    System.out.println(" " + part2benzin);
    
    System.out.println(" ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯");
    
    //Diesel auslesen
    
    System.out.println(" _______________");
    System.out.println(" Diesel");
    System.out.println("");
    
    String dieselpreis = dieselhtml;
    String[] dparts = dieselpreis.split("'");
    String part1diesel = dparts[0]; 
    String part2diesel = dparts[1];
    
    System.out.println(" " + part2diesel);
    
    System.out.println(" ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯");
    
  }
 
Zuletzt bearbeitet:
Deine main-Methode ist der Einstiegspunkt für das Program und wird implizit aufgerufen, sobald du das Programm startest. Wenn die main-Methode abgearbeitet ist, ist das Programm "fertig" und wird beendet. Die zweite Methode wird nicht ausgeführt, weil du sie nirgends explizit aufrufst.
 
@stg

Ja meine frage ist ja wie ich die 2. Methode aufrufe.

Ich habe es schon probiert mit "auslesen();" am Ende der main, aber das funktioniert nicht.
 
Moin,

wo genau ?
Was heißt "am Ende" ?

Gruß Klaus

EDIT
NACH der main-Methode geht natürlich nicht!! Da ist Dein Programm zuende :noe:
Java:
class Program
    {
        static void Main(string[] args)
        {
        } // Ende des Programms

        // Hier darf und kann nichts mehr aufgerufen werden !!!!!
    }
 
Zuletzt bearbeitet:
Also ich habe "auslesen();" (die 2. Methode) an das Ende der ersten Methode gesetzt "main". Also ungefähr in zeile 72.

Da ich erreichen wollte, wenn die erste Methode (main) durchgelaufen ist, er in der 2. Methode (auslesen) weiter macht.
 
und warum nicht VOR das catch??
Andernfalls würde nicht mal die IOException vernünftig gefangen ....

WIE sah der Aufruf denn aus ?
Kam irgendeine Fehlermeldung ?

Gruß Klaus
 
Ich habe das auslesen(); VOR das catch gesetzt und auch anderes aber ich erhalte die Fehlermeldung:

beni.java:70:7: error: method auslesen in class beni cannot be applied to given types;
auslesen();
^
required: String,double
found: no arguments
reason: actual and formal argument lists differ in length
 
Okay, ich habe jetzt wieder alles in die "main" gepackt, wie vorher und es funktioniert, wie vorher...

Ich wollte das ja eigentlich nur unterteillen...

Aber wenn du zeit hättest, eine Frage habe ich noch. Undzwar will bei mr der GregorianCalendar nicht mehr die Zeit eintragen...

Unter "Datum" in zeile 133 ist die Anweisung.

beni.java:140:5: error: cannot find symbol
printGregorianCalendarDate();
^
symbol: method printGregorianCalendarDate()
location: class beni

kommt. Wäre nett wenn du mir den Fehler beheben könntest und mir beschreiben woran es lag...
Vorher hatte alles noch funktioniert.

Java:
import java.io.*;
import java.text.DateFormat;
import java.util.Date;
import java.util.GregorianCalendar; 
import java.net.URL;
import java.util.Scanner;
import java.net.URL;

public class beni{
  public static void main (String[] args) throws IOException {
    
    System.out.println(" Für welche Tankstelle möchten Sie die Preise wissen? ");
    System.out.println(" ");
    System.out.println(" 01 - HEM - Halchter");
    System.out.println(" ");
    System.out.println(" 02 - HEM - Schladen");
    System.out.println(" ");
    System.out.println(" 03 - ARAL - Floethe ");
    System.out.println(" ");
    System.out.println(" Angaben ohne gewähr");
    System.out.println(" ");
    double tanke = InOut.readDouble(" Bitte Auswahl angeben: "); 
    
    // HTML auslesen
    
    double zeile = 0;
    String xx = "null";
    
    PrintWriter htmlWriter = null;
    try {
      htmlWriter = new PrintWriter(new BufferedWriter(new FileWriter("HTML.txt")));
      //                 Clever-Tanken ID
      if (tanke == 01 || tanke == 1 ) {    //Halchter
        URL url = new URL("http://www.clever-tanken.de/tankstelle_details/8142"); 
        BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        while((line=r.readLine())!=null) 
        htmlWriter.println(line)  ;
        zeile = 229;
        xx = "Halchter";
      } // end of if
      
      if (tanke == 02 || tanke == 2 ) {     //Schladen
        URL url = new URL("http://www.clever-tanken.de/tankstelle_details/7870");
        BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        while((line=r.readLine())!=null) 
        htmlWriter.println(line)  ;
        zeile = 229;
        xx = "Schladen";
      } // end of if
      
      if (tanke == 03 || tanke == 3 ) {     //Floethe
        URL url = new URL("http://www.clever-tanken.de/tankstelle_details/27052");
        BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        while((line=r.readLine())!=null) 
        htmlWriter.println(line)  ;
        zeile = 227;
        xx = "Floethe";
      } // end of if
    } catch (IOException ioe) {
      ioe.printStackTrace();
    } finally {
      if (htmlWriter != null){
        htmlWriter.flush();
        htmlWriter.close();
      }
    } 
    
    
    
    
    // Zeile auslesen  
    
    FileReader html = new FileReader("HTML.txt");
    BufferedReader br = new BufferedReader(html);
    
    String dieselhtml =br.readLine();
    int dieselzahl = 0;
    while (dieselzahl <= zeile) {
      
      dieselhtml = br.readLine();
      
      dieselzahl++;
    } // end of while
    
    String benzinhtml =br.readLine();
    int benzinzahl = 0;
    while (benzinzahl <= 14) {  
      
      benzinhtml = br.readLine();
      
      benzinzahl++;
    } // end of while 
    
    //Benzin auslesen
    
    System.out.println("");
    System.out.println(" " + xx);
    System.out.println(" _______________");
    System.out.println(" Super");
    System.out.println("");
    
    String benzinpreis = benzinhtml;
    String[] bparts = benzinpreis.split("'");
    String part1benzin = bparts[0]; 
    String part2benzin = bparts[1];
    
    System.out.println(" " + part2benzin);
    
    System.out.println(" ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯");
    
    //Diesel auslesen
    
    System.out.println(" _______________");
    System.out.println(" Diesel");
    System.out.println("");
    
    String dieselpreis = dieselhtml;
    String[] dparts = dieselpreis.split("'");
    String part1diesel = dparts[0]; 
    String part2diesel = dparts[1];
    
    System.out.println(" " + part2diesel);
    
    System.out.println(" ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯");
    

    //Datum
    
    printGregorianCalendarDate(); 
    
    //Benzin
    
    PrintWriter aWriter = null;
    try {
      aWriter = new PrintWriter(new BufferedWriter(new FileWriter("Verlauf/" + xx + "/Verlauf.txt",true))); 
      aWriter.println("Benzin: " +part2benzin + " Euro")  ;
    } catch (IOException ioe) {
      ioe.printStackTrace();
    } finally {
      if (aWriter != null){
        aWriter.flush();
        aWriter.close();
      }
      
    } // end of if
    
    //Diesel
    
    PrintWriter aaWriter = null;
    try {
      aaWriter = new PrintWriter(new BufferedWriter(new FileWriter("Verlauf/" + xx + "/Verlauf.txt",true))); 
      aaWriter.println("Diesel: " +part2diesel + " Euro")  ;
      aaWriter.println(" ");  
    } catch (IOException ioe) {
      ioe.printStackTrace();
    } finally {
      if (aaWriter != null){
        aaWriter.flush();
        aaWriter.close();
      }
      
    } // end of if

    
    GregorianCalendar now = new GregorianCalendar();
    DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);   
    df = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); 
    String zeit = (df.format(now.getTime()));
    PrintWriter ppWriter = null;
    try {
      ppWriter = new PrintWriter(new BufferedWriter(new FileWriter("Verlauf/" + xx + "/Verlauf.txt",true)));
      ppWriter.println(zeit)  ;
    } catch (IOException ioe) {
      ioe.printStackTrace();
    } finally {
      if (ppWriter != null){
        ppWriter.flush();
        ppWriter.close();
      }
    }   
  }
}
 
Zuletzt bearbeitet:
Moin,

der gesamten Code in die main-Methode zu packen, ist schlicht gesagt Blödsinn !!
Warum rufst Du Deine Methode "auslesen" nichgt so auf, wie die deklariert ist ??
Java:
String myString = "BlaBlub";
double myZeile = 5.5; // Zeilennummern mit Nachkommastellen ???

auslesen ( myString, myZeile );

Dann:
die Methode "printGregorianCalendarDate" ist nirgendwo deklariert!! Wo glaubst Du kommt sie her ??

Gruß Klaus
 
Wie soll ich meine Methode "auslesen" aufrufen, wenn er davor anhält und nicht weiter macht?

Wie du das in dem bsp. hast, hatte ich es auch in meinem programm nur dort hat er dann aber nicht weiter gemacht.


Ja wo und wie soll ich denn die Methode "printGregorianCalendarDate" deklarieren? Vorher hat es ja funktioniert ohne das Sie speziell deklariert war.
 
Wie soll ich meine Methode "auslesen" aufrufen, wenn er davor anhält und nicht weiter macht?
Wie du das in dem bsp. hast, hatte ich es auch in meinem programm nur dort hat er dann aber nicht weiter gemacht.
Das glaube ich nun kaum, prinzipiell muss das gehen!
Allerdings kennen wir Deinen aktuellen Code nichjt und können somit nicht wissen, ob Du schion alleine beim Aufruf einen Fehler gemacht hast !!
Ergo: poste (jeweils) den aktuellen Code ....

Da könnte ich mir vorstellen, dass das Progr. ggf. hier beimEinlesen von irgendwelchen Werten "hängt" (auch toll, dass die Methode das 'auslesen' heißt:
Java:
int dieselzahl = 0;
while (dieselzahl <= zeile)   // Wieso vergelichst Du hier int mit double ??? Übergib 'zeile' doch gleich als int !!!
{
    dieselhtml = br.readLine();  // Warten auf eine Eingabe ???
    dieselzahl++;
} // end of while

Ja wo und wie soll ich denn die Methode "printGregorianCalendarDate" deklarieren? Vorher hat es ja funktioniert ohne das Sie speziell deklariert war
Auch Letzteres glaube ich kaum, da dies KEINE Methode der Klasse "GregorianCalendar" ist !!!
Zudem würde ich ohnehin besser JodaTime nehmen, da zumindest 'date' weitestgehend depricated ist !!
Nur damit hast Du saubere TimeStamps !!
Joda-Time - Home

Gruß Klaus
 

Zurück
Oben