bitte mal compelieren+testen



  • hi leute! mein compiler spinnt;-(
    kann den code mal einer compelieren und schau ob alles passt: also mit sortieren und speichern in textdatei?? please

    import java.io.*;
    import java.util.*;
    
    /* Laufwettbewerb.java */ 
    
    public class Laufwettbewerb 
    { 
      public static void main(String[] args) 
      { 
        /* für Textdatei schreiben */
        FileWriter f1;
    
        int anzahlDerLaufer_input = 0; // es soll ja die Anzahl der läuferinnen eingegeben werden 
        Random r = new Random(); 
    
        System.out.println("Laufwettbewerb\n"); 
        System.out.println("Wie viele Laufer: "); 
    
        /* Anzahl der Läufer von der Konsole einlesen*/ 
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
        anzahlDerLaufer_input = Integer.parseInt(in.readLine()); 
    
        /* Spalte 1: Laufnummer */
        /* Spalten 2-5: Zwischenzeiten */
        /* Spalte 6: Endzeit */
        /* Spate 7: Durschnittsgeschwindigkeit */
        /* Spalte 8: Maximalgeschwindigkeit */ 
        double [][] times = new double [anzahlDerLaufer_input][1+4+3]; 
    
        /* Die Zufallszahl für time1 soll im Bereich 300 bis 600 Sekunden liegen. */
        /* Bei jeder weiteren Zeitmessung erhöht sich die Zwischenzeit im Bereich von 300 bis 900 Sekunden. */
        /* Es werden 4 Zwischenzeiten gemessen */ 
    
        int spalte = 0;
        int endzeit = 0; 
        int geschwindigkeit = 0;
        int geschwindigkeit_max = 0;
        int geschwindigkeit_durchschnitt = 0; 
    
        for (int i=0; i<=anzahlDerLaufer_input; i++) 
        {
          /* Startnummer speichern */
          spalte = 0;
          times[i][spalte] = i;
          spalte++;
    
          endzeit = 0;
          geschwindigkeit = 0;
          geschwindigkeit_max = 0
    
          /* 4 Zwischenzeiten für jeden Läufer*/ 
          while (spalte < 6) 
          {
             if(spalte==1)
                times[i][spalte] = times[i][spalte] = (int) Math.random()*(600-300+1));;
             else
                times[i][spalte] = time[i][spalte-1] + (int) Math.random()*(900-300+1));;
    
             /* Endzeit aufsummieren */
             endzeit+=times[i][spalte];
    
             /* Geschwindigkeit_max ermitteln */
             geschwindigkeit = 2000 / (times[i][spalte] - time[i][spalte-1]);
             if (geschwindkeit >= geschwingkeit_max)
                 geschwingkeit_max = geschwindigkeit;
    
             /* Zwischenzeit + 1 */
             spalte++;
          }
    
          /* Endzeit berechnen */
          times[i][spalte++] = endzeit;
    
          /* Durschschnittsgeschwingkeit berechnen */
          geschwindigkeit_durchschnitt = (4*2000) / endzeit;
          times[i][spalte++] = geschwindigkeit_durchschnitt;
    
          /* Geschwindigkeit_max in Array schreiben */
          times[i][spalte++] = geschwindigkeit_max;
        }
    
        /* nach durchschnittlicher Laufgeschwindigkeit sortieren */
        /* die Laufgeschwindigkeit ist im Array in Spalte 7 */
        sort(times); 
    
        /* In die Textdatei schreiben */
        try {
           f1 = new FileWriter("Ausgabe.txt");
    
           /* Schreiben aller Läufer in Textdatei*/
           for (i=0; i<=anzahlDerLaufer_input; i++) 
           {
             spalte = 0;
    
             /* Das Array hat 8 Spalten */
             while (spalte < 9) 
             {
               f1.write(times[i][spalte++]+"     ");
             }
    
             f1.write("\n");
           }   
    
           f1.close();
    
        } catch (IOException e) {
           System.out.println("Fehler beim Erstellen der Datei");
        }
    
      }
    
      /* Quicksort: */  
      /* Im Folgenden sind die wichtigsten Schritte des Quicksort Algorithmus aufgelistet: */ 
      /* 1. Man wähle ein willkürliches (!) Element aus dem Array (wird Pivot, oder Partition Element genannt) */
      /* 2. Man sortiere das Array so, dass alle Werte, die kleiner als das Partition Element sind links */ 
      /* davon stehen und alle die größer sind, rechts davon. (Vorausgesetzt, wir sortieren aufsteigend) */
      /* 3. Das Array ist nun in 2 Hälften geteilt. Das Partition Element steht dabei schon an seiner finalen */ 
      /* Position (schließlich wurde das Array ja nach ihm sortiert) */
      /* 4. Für jede der beiden so entstandenen Hälften werden nun Schritte 1 - 4 ausgeführt. */
    
      public static void sort (int [][] array)  
      {  
         quickSort (array,0,array.length - 1);  
      }  
    
      private static void quickSort(int in_array[][], int left, int right)  
      {  
         int current, last;  
         if (left >= right) return;  
         swap(in_array, left, (left+right)/2);  
         last = left;  
         for (current = left + 1; current <= right; current++)  
         {  
            if (in_array[current][7] < in_array[left][7])  
               swap(in_array, ++last, current);  
         }  
         swap(in_array, left, last);  
         quickSort(in_array, left, last-1);  
         quickSort(in_array, last+1, right);  
      }  
    
      private static void swap(int in_array[][], int i, int j)  
      {  
         int[] temp;  // "unter"-array vertauschen
         temp = in_array[i];  
         in_array[i] = in_array[j];
         in_array[j] = temp;  
      }
    }
    

    cu 😃



  • hi

    du schreibst mal time und mal times.. da fehlen semikolons und einige zeichen sind zuviel.

    fahr doch einfach mal mit deinem java drüber.

    sowas geht auch auf konsole, wenn die vermeintliche ide spinnt.

    und geschwindigkeit schreibste auch jedesmal anders... nö, erstmal den code bereinigen.. wie wärs mit copy and paste? ist eine sichere methode.



  • hi! hab den code no mal überarbeitet!!
    bitte no mal compelieren die semicolons sind weg, times in nun in ordnung!!
    das mit geschwindigkeit passt so....
    bitte mal compeliern+testen! danke!! cu

    import java.io.*;
    import java.util.*;
    
    /* Laufwettbewerb.java */ 
    
    public class Laufwettbewerb 
    { 
      public static void main(String[] args) 
      { 
        /* für Textdatei schreiben */
        FileWriter f1;
    
        int anzahlDerLaufer_input = 0; // es soll ja die Anzahl der Läufer eingegeben werden 
        Random r = new Random(); 
    
        System.out.println("Laufwettbewerb\n"); 
        System.out.println("Wie viele Laufer: "); 
    
        /* Anzahl der Läufer von der Konsole einlesen */ 
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
        anzahlDerLaufer_input = Integer.parseInt(in.readLine()); 
    
        /* Spalte 1: Startnummer */
        /* Spalten 2-5: Zwischenzeiten */
        /* Spalte 6: Endzeit */
        /* Spate 7: Durschnittsgeschwindigkeit */
        /* Spalte 8: Maximalgeschwindigkeit */ 
        double [][] times = new double [anzahlDerLaufer_input][1+4+3]; 
    
        /* Die Zufallszahl für time1 soll im Bereich 300 bis 600 Sekunden liegen. */
        /* Bei jeder weiteren Zeitmessung erhöht sich die Zwischenzeit im Bereich von 300 bis 900 Sekunden. */
        /* Es werden 4 Zwischenzeiten gemessen */ 
    
        int spalte = 0;
        int endzeit = 0; 
        int geschwindigkeit = 0;
        int geschwindigkeit_max = 0;
        int geschwindigkeit_durchschnitt = 0; 
    
        for (int i=0; i<=anzahlDerLaufer_input; i++) 
        {
          /* Startnummer speichern */
          spalte = 0;
          times[i][spalte] = i;
          spalte++;
    
          endzeit = 0;
          geschwindigkeit = 0;
          geschwindigkeit_max = 0;
    
          int max = 600;
          int min = 300;
    
          /* 4 Zwischenzeiten für jeden Läufer*/ 
          while (spalte < 6) 
          {
             if( spalte > 1 )
             {
               max = 900;
             }
             times[i][spalte] = times[i][spalte-1] + min + (int) Math.random()*(max-min+1));
    
             /* Endzeit aufsummieren */
             endzeit+=times[i][spalte];
    
             /* Geschwindigkeit_max ermitteln */
             geschwindigkeit = 2000 / (times[i][spalte] - times[i][spalte-1]);
             if (geschwindkeit >= geschwingkeit_max)
                 geschwingkeit_max = geschwindigkeit;
    
             /* Zwischenzeit + 1 */
             spalte++;
          }
    
          /* Endzeit berechnen */
          times[i][spalte++] = endzeit;
    
          /* Durschschnittsgeschwingkeit berechnen */
          geschwindigkeit_durchschnitt = (4*2000) / endzeit;
          times[i][spalte++] = geschwindigkeit_durchschnitt;
    
          /* Geschwindigkeit_max in Array schreiben */
          times[i][spalte++] = geschwindigkeit_max;
        }
    
        /* nach durchschnittlicher Laufgeschwindigkeit sortieren */
        /* die Laufgeschwindigkeit ist im Array in Spalte 7 */
        sort(times); 
    
        /* In die Textdatei schreiben */
        try {
           f1 = new FileWriter("Ausgabe.txt");
    
           /* Schreiben aller Läufer in Textdatei*/
           for (i=0; i<=anzahlDerLaufer_input; i++) 
           {
             spalte = 0;
    
             /* Das Array hat 8 Spalten */
             while (spalte < 9) 
             {
               f1.write(times[i][spalte++]+"     ");
             }
    
             f1.write("\n");
           }   
    
           f1.close();
    
        } catch (IOException e) {
           System.out.println("Fehler beim Erstellen der Datei");
        }
    
      }
    
      /* Quicksort: */  
      /* Im Folgenden sind die wichtigsten Schritte des Quicksort Algorithmus aufgelistet: */ 
      /* 1. Man wähle ein willkürliches (!) Element aus dem Array (wird Pivot, oder Partition Element genannt) */
      /* 2. Man sortiere das Array so, dass alle Werte, die kleiner als das Partition Element sind links */ 
      /* davon stehen und alle die größer sind, rechts davon. (Vorausgesetzt, wir sortieren aufsteigend) */
      /* 3. Das Array ist nun in 2 Hälften geteilt. Das Partition Element steht dabei schon an seiner finalen */ 
      /* Position (schließlich wurde das Array ja nach ihm sortiert) */
      /* 4. Für jede der beiden so entstandenen Hälften werden nun Schritte 1 - 4 ausgeführt. */
    
      public static void sort (int [][] array)  
      {  
         quickSort (array,0,array.length - 1);  
      }  
    
      private static void quickSort(int in_array[][], int left, int right)  
      {  
         int current, last;  
         if (left >= right) return;  
         swap(in_array, left, (left+right)/2);  
         last = left;  
         for (current = left + 1; current <= right; current++)  
         {  
            if (in_array[current][7] < in_array[left][7])  
               swap(in_array, ++last, current);  
         }  
         swap(in_array, left, last);  
         quickSort(in_array, left, last-1);  
         quickSort(in_array, last+1, right);  
      }  
    
      private static void swap(int in_array[][], int i, int j)  
      {  
         int[] temp;  // "unter"-array vertauschen
         temp = in_array[i];  
         in_array[i] = in_array[j];
         in_array[j] = temp;  
      }
    }
    


  • import java.io.*;
    import java.util.*;
    
    /* Laufwettbewerb.java */ 
    
    public class Laufwettbewerb 
    { 
      public static void main(String[] args) 
      { 
        /* für Textdatei schreiben */
        FileWriter f1;
    
        int anzahlDerLaufer_input = 0; // es soll ja die Anzahl der Läufer eingegeben werden 
        Random r = new Random(); 
    
        System.out.println("Laufwettbewerb\n"); 
        System.out.println("Wie viele Laufer: "); 
    
        /* Anzahl der Läufer von der Konsole einlesen */ 
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
        anzahlDerLaufer_input = Integer.parseInt(in.readLine()); 
    
        /* Spalte 1: Startnummer */
        /* Spalten 2-5: Zwischenzeiten */
        /* Spalte 6: Endzeit */
        /* Spate 7: Durschnittsgeschwindigkeit */
        /* Spalte 8: Maximalgeschwindigkeit */ 
        int [][] times = new double [anzahlDerLaufer_input][1+4+3]; 
    
        /* Die Zufallszahl für time1 soll im Bereich 300 bis 600 Sekunden liegen. */
        /* Bei jeder weiteren Zeitmessung erhöht sich die Zwischenzeit im Bereich von 300 bis 900 Sekunden. */
        /* Es werden 4 Zwischenzeiten gemessen */ 
    
        int spalte = 0;
        int endzeit = 0; 
        int geschwindigkeit = 0;
        int geschwindigkeit_max = 0;
        int geschwindigkeit_durchschnitt = 0; 
    
        for (int i=0; i<=anzahlDerLaufer_input; i++) 
        {
          /* Startnummer speichern */
          spalte = 0;
          times[i][spalte] = i;
          spalte++;
    
          endzeit = 0;
          geschwindigkeit = 0;
          geschwindigkeit_max = 0;
    
          int max = 600;
          int min = 300;
    
          /* 4 Zwischenzeiten für jeden Läufer*/ 
          while (spalte < 6) 
          {
             if( spalte > 1 )
             {
               max = 900;
             }
             times[i][spalte] = times[i][spalte-1] + min + (int) Math.random()*(max-min+1);
    
             /* Endzeit aufsummieren */
             endzeit+=times[i][spalte];
    
             /* Geschwindigkeit_max ermitteln */
             geschwindigkeit = 2000 / (times[i][spalte] - times[i][spalte-1]);
             if (geschwindkeit >= geschwingkeit_max)
                 geschwingkeit_max = geschwindigkeit;
    
             /* Zwischenzeit + 1 */
             spalte++;
          }
    
          /* Endzeit berechnen */
          times[i][spalte++] = endzeit;
    
          /* Durschschnittsgeschwingkeit berechnen */
          geschwindigkeit_durchschnitt = (4*2000) / endzeit;
          times[i][spalte++] = geschwindigkeit_durchschnitt;
    
          /* Geschwindigkeit_max in Array schreiben */
          times[i][spalte++] = geschwindigkeit_max;
        }
    
        /* nach durchschnittlicher Laufgeschwindigkeit sortieren */
        /* die Laufgeschwindigkeit ist im Array in Spalte 7 */
        sort(times); 
    
        /* In die Textdatei schreiben */
        try {
           f1 = new FileWriter("Ausgabe.txt");
    
           /* Schreiben aller Läufer in Textdatei*/
           for (i=0; i<=anzahlDerLaufer_input; i++) 
           {
             spalte = 0;
    
             /* Das Array hat 8 Spalten */
             while (spalte < 9) 
             {
               f1.write(times[i][spalte++]+"     ");
             }
    
             f1.write("\n");
           }   
    
           f1.close();
    
        } catch (IOException e) {
           System.out.println("Fehler beim Erstellen der Datei");
        }
    
      }
    
      /* Quicksort: */  
      /* Im Folgenden sind die wichtigsten Schritte des Quicksort Algorithmus aufgelistet: */ 
      /* 1. Man wähle ein willkürliches (!) Element aus dem Array (wird Pivot, oder Partition Element genannt) */
      /* 2. Man sortiere das Array so, dass alle Werte, die kleiner als das Partition Element sind links */ 
      /* davon stehen und alle die größer sind, rechts davon. (Vorausgesetzt, wir sortieren aufsteigend) */
      /* 3. Das Array ist nun in 2 Hälften geteilt. Das Partition Element steht dabei schon an seiner finalen */ 
      /* Position (schließlich wurde das Array ja nach ihm sortiert) */
      /* 4. Für jede der beiden so entstandenen Hälften werden nun Schritte 1 - 4 ausgeführt. */
    
      public static void sort (int [][] array)  
      {  
         quickSort (array,0,array.length - 1);  
      }  
    
      private static void quickSort(int in_array[][], int left, int right)  
      {  
         int current, last;  
         if (left >= right) return;  
         swap(in_array, left, (left+right)/2);  
         last = left;  
         for (current = left + 1; current <= right; current++)  
         {  
            if (in_array[current][7] < in_array[left][7])  
               swap(in_array, ++last, current);  
         }  
         swap(in_array, left, last);  
         quickSort(in_array, left, last-1);  
         quickSort(in_array, last+1, right);  
      }  
    
      private static void swap(int in_array[][], int i, int j)  
      {  
         int[] temp;  // "unter"-array vertauschen
         temp = in_array[i];  
         in_array[i] = in_array[j];
         in_array[j] = temp;  
      }
    }
    
    [klamath] /tmp>javac Laufwettbewerb.java
    Laufwettbewerb.java:68: possible loss of precision
    found   : double
    required: int
             geschwindigkeit = 2000 / (times[i][spalte] - times[i][spalte-1]);
                                    ^
    Laufwettbewerb.java:69: cannot resolve symbol
    symbol  : variable geschwindkeit 
    location: class Laufwettbewerb
             if (geschwindkeit >= geschwingkeit_max)
                 ^
    Laufwettbewerb.java:69: cannot resolve symbol
    symbol  : variable geschwingkeit_max 
    location: class Laufwettbewerb
             if (geschwindkeit >= geschwingkeit_max)
                                  ^
    Laufwettbewerb.java:70: cannot resolve symbol
    symbol  : variable geschwingkeit_max 
    location: class Laufwettbewerb
                 geschwingkeit_max = geschwindigkeit;
                 ^
    Laufwettbewerb.java:89: sort(int[][]) in Laufwettbewerb cannot be applied to (do                                                              uble[][])
        sort(times); 
        ^
    Laufwettbewerb.java:96: cannot resolve symbol
    symbol  : variable i 
    location: class Laufwettbewerb
           for (i=0; i<=anzahlDerLaufer_input; i++) 
                ^
    Laufwettbewerb.java:96: cannot resolve symbol
    symbol  : variable i 
    location: class Laufwettbewerb
           for (i=0; i<=anzahlDerLaufer_input; i++) 
                     ^
    Laufwettbewerb.java:96: cannot resolve symbol
    symbol  : variable i 
    location: class Laufwettbewerb
           for (i=0; i<=anzahlDerLaufer_input; i++) 
                                               ^
    Laufwettbewerb.java:103: cannot resolve symbol
    symbol  : variable i 
    location: class Laufwettbewerb
               f1.write(times[i][spalte++]+"     ");
                              ^
    9 errors
    

    hab da paar error..was falsch?
    das hab ich schon geändert:
    double [][] times = new double [anzahlDerLaufer_input][1+4+3]; auf:
    int [][] times = new double [anzahlDerLaufer_input][1+4+3];

    cu



  • BufferedReader in = new BufferedReader(new InputStreamReader(System.in));  
        anzahlDerLaufer_input = Integer.parseInt(in.readLine());
    

    Hier fehlt das Exception Handling

    int [][] times = new double [anzahlDerLaufer_input][1+4+3];
    

    das wird so auch nicht gehen

    schnapp dir doch mal z.b. eclipse und compiliere das mal und testen testen testen



  • boah sind da viele fehler drin.

    willst nicht mit was leichterm anfangen^^



  • ich find das schon nicht schlecht so ne herausforderung, aber er sollte mal die komponenten einzeln auf funktionsfähigkeit testen



  • mein erstes java programm is fertig;-)
    was sagt ihr?

    import java.io.*;
    import java.util.*;
    
    /* Laufwettbewerb.java */ 
    
    public class Laufwettbewerb 
    { 
    	public static void main(String[] args) 
    	{ 
    		/* für Textdatei schreiben */
    		FileWriter f1;
    
    		int anzahlDerLaufer_input = 0; // es soll ja die Anzahl der Läufer eingegeben werden 
    		Random r = new Random(); 
    
    		System.out.println("Laufwettbewerb\n"); 
    		System.out.println("Wie viele Laufer: "); 
    
    		/* Anzahl der Läufer von der Konsole einlesen */ 
    		BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
    		try
    		{
    			anzahlDerLaufer_input = Integer.parseInt(in.readLine()); 
    		} catch (IOException e) {
    			System.out.println("Fehler beim Einlesen");
    		}
    
    		/* Spalte 0: Startnummer */
    		/* Spalten 1-4: Zwischenzeiten */
    		/* Spalte 5: Gesamtzeit */
    		/* Spate 6: Durschnittsgeschwindigkeit */
    		/* Spalte 7: Maximalgeschwindigkeit */ 
    		int [][] times = new int [anzahlDerLaufer_input][1+5+2]; 
    
    		/* Die Zufallszahl für time1 soll im Bereich 300 bis 600 Sekunden liegen. */
    		/* Bei jeder weiteren Zeitmessung erhöht sich die Zwischenzeit im Bereich von 300 bis 900 Sekunden. */
    		/* Es werden 4 Zwischenzeiten gemessen */ 
    
    		int spalte = 0;
    		int endzeit = 0; 
    		int geschwindigkeit = 0;
    		int geschwindigkeit_max = 0;
    		int geschwindigkeit_durchschnitt = 0; 
    
    		for (int i=0; i < anzahlDerLaufer_input; i++) 
    		{
    			/* Startnummer speichern */
    			spalte = 0;
    			times[i][spalte] = i+1;
    			spalte++;
    
    			endzeit = 0;
    			geschwindigkeit = 0;
    			geschwindigkeit_max = 0;
    
    			int max = 600;
    			int min = 300;
    
    			/* 4 Zwischenzeiten für jeden Läufer*/ 
    			while (spalte < 5) 
    			{
    				if (spalte == 2) max = 900;
    				times[i][spalte] = min + Math.abs(r.nextInt()) % (max-min+1);
    
    				/* Endzeit aufsummieren */
    				endzeit += times[i][spalte];
    
    				/* Geschwindigkeit_max ermitteln */
    				geschwindigkeit = (int)(200000 / (times[i][spalte]));
    				if (geschwindigkeit >= geschwindigkeit_max)
    					geschwindigkeit_max = geschwindigkeit;
    
    				/* Zwischenzeit + 1 */
    				spalte++;
    			}
    
    			/* Endzeit berechnen */
    			times[i][spalte++] = endzeit;
    
    			/* Durschschnittsgeschwingkeit berechnen */
    			geschwindigkeit_durchschnitt = (4*200000) / endzeit;
    			times[i][spalte++] = geschwindigkeit_durchschnitt;
    
    			/* Geschwindigkeit_max in Array schreiben */
    			times[i][spalte++] = geschwindigkeit_max;
    		}
    
    		/* nach durchschnittlicher Laufgeschwindigkeit sortieren */
    		/* die Laufgeschwindigkeit ist im Array in Spalte 7 */
    		sort(times);
    
                    System.out.println("\nLaufer wurden sortiert"); 
    
    		/* In die Textdatei schreiben */
    		try {
    			f1 = new FileWriter("Ausgabe.txt");
    
    			/* Tabellenkopf schreiben */
    			f1.write("NR.\tT1\tT2\tT3\tT4\tTGes.\tvAvg.\tvMax\r\n");
    
                            /* Tabellenkopf auf Konsole ausgeben*/
                            System.out.println("\nNR.\tT1\tT2\tT3\tT4\tTGes.\tvAvg.\tvMax\r");
    
    			/* Schreiben aller Läufer in Textdatei */
    			for (int i=0; i < anzahlDerLaufer_input; i++) 
    			{
    				spalte = 0;
    				/* Das Array hat 8 Spalten */
    				while (spalte < 8) 
    				{
                                            /* Ausgabe auf Konsole */  
                                            System.out.print(times[i][spalte]+"\t");
    
                                            /* In Textdatei schreiben */
    					f1.write(times[i][spalte++]+"\t");                                    
    				}
    
    				f1.write("\r\n");
                                    System.out.println("\r");
    			}   
    
    			f1.close();
    
    		} catch (IOException e) {
    			System.out.println("Fehler beim Erstellen der Datei");
    		}
    
                    System.out.println("\nDie Tabelle erfolgreich in die Textdatei: Ausgabe.txt gespeichert");
    
      }
    
      /* Quicksort: */  
      /* Im Folgenden sind die wichtigsten Schritte des Quicksort Algorithmus aufgelistet: */ 
      /* 1. Man wähle ein willkürliches (!) Element aus dem Array (wird Pivot, oder Partition Element genannt) */
      /* 2. Man sortiere das Array so, dass alle Werte, die kleiner als das Partition Element sind links */ 
      /* davon stehen und alle die größer sind, rechts davon. (Vorausgesetzt, wir sortieren aufsteigend) */
      /* 3. Das Array ist nun in 2 Hälften geteilt. Das Partition Element steht dabei schon an seiner finalen */ 
      /* Position (schließlich wurde das Array ja nach ihm sortiert) */
      /* 4. Für jede der beiden so entstandenen Hälften werden nun Schritte 1 - 4 ausgeführt. */
    
      public static void sort (int [][] array)  
      {  
    	  quickSort (array,0,array.length - 1);  
      }  
    
      private static void quickSort(int in_array[][], int left, int right)  
      {  
    	  int current, last;  
    	  if (left >= right) return;  
    	  swap(in_array, left, (left+right)/2);  
    	  last = left;  
    	  for (current = left + 1; current <= right; current++)  
    	  {  
    		  if (in_array[current][5] < in_array[left][5])  
    			  swap(in_array, ++last, current);  
    	  }  
    	  swap(in_array, left, last);  
    	  quickSort(in_array, left, last-1);  
    	  quickSort(in_array, last+1, right);  
      }  
    
      private static void swap(int in_array[][], int i, int j)  
      {  
    	  int[] temp;  // "unter"-array vertauschen
    	  temp = in_array[i];  
    	  in_array[i] = in_array[j];
    	  in_array[j] = temp;  
      }
    }
    

    nur ein fehler is!!!

    } catch (IOException e) {
    			System.out.println("Fehler beim Erstellen der Datei");
    		}
    
                    System.out.println("\nDie Tabelle erfolgreich in die Textdatei: Ausgabe.txt gespeichert");
    

    wenn ich keine rechte hab eine textdatei zu erstellen dann wird auch geschrieben textfile wurde erfolgreich erstellt, wie kann man das umgehen??? helft mir!!!

    cu 😃



  • mein erstes java programm is fertig;-)
    was sagt ihr?

    import java.io.*;
    import java.util.*;
    
    /* Laufwettbewerb.java */ 
    
    public class Laufwettbewerb 
    { 
    	public static void main(String[] args) 
    	{ 
    		/* für Textdatei schreiben */
    		FileWriter f1;
    
    		int anzahlDerLaufer_input = 0; // es soll ja die Anzahl der Läufer eingegeben werden 
    		Random r = new Random(); 
    
    		System.out.println("Laufwettbewerb\n"); 
    		System.out.println("Wie viele Laufer: "); 
    
    		/* Anzahl der Läufer von der Konsole einlesen */ 
    		BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
    		try
    		{
    			anzahlDerLaufer_input = Integer.parseInt(in.readLine()); 
    		} catch (IOException e) {
    			System.out.println("Fehler beim Einlesen");
    		}
    
    		/* Spalte 0: Startnummer */
    		/* Spalten 1-4: Zwischenzeiten */
    		/* Spalte 5: Gesamtzeit */
    		/* Spate 6: Durschnittsgeschwindigkeit */
    		/* Spalte 7: Maximalgeschwindigkeit */ 
    		int [][] times = new int [anzahlDerLaufer_input][1+5+2]; 
    
    		/* Die Zufallszahl für time1 soll im Bereich 300 bis 600 Sekunden liegen. */
    		/* Bei jeder weiteren Zeitmessung erhöht sich die Zwischenzeit im Bereich von 300 bis 900 Sekunden. */
    		/* Es werden 4 Zwischenzeiten gemessen */ 
    
    		int spalte = 0;
    		int endzeit = 0; 
    		int geschwindigkeit = 0;
    		int geschwindigkeit_max = 0;
    		int geschwindigkeit_durchschnitt = 0; 
    
    		for (int i=0; i < anzahlDerLaufer_input; i++) 
    		{
    			/* Startnummer speichern */
    			spalte = 0;
    			times[i][spalte] = i+1;
    			spalte++;
    
    			endzeit = 0;
    			geschwindigkeit = 0;
    			geschwindigkeit_max = 0;
    
    			int max = 600;
    			int min = 300;
    
    			/* 4 Zwischenzeiten für jeden Läufer*/ 
    			while (spalte < 5) 
    			{
    				if (spalte == 2) max = 900;
    				times[i][spalte] = min + Math.abs(r.nextInt()) % (max-min+1);
    
    				/* Endzeit aufsummieren */
    				endzeit += times[i][spalte];
    
    				/* Geschwindigkeit_max ermitteln */
    				geschwindigkeit = (int)(200000 / (times[i][spalte]));
    				if (geschwindigkeit >= geschwindigkeit_max)
    					geschwindigkeit_max = geschwindigkeit;
    
    				/* Zwischenzeit + 1 */
    				spalte++;
    			}
    
    			/* Endzeit berechnen */
    			times[i][spalte++] = endzeit;
    
    			/* Durschschnittsgeschwingkeit berechnen */
    			geschwindigkeit_durchschnitt = (4*200000) / endzeit;
    			times[i][spalte++] = geschwindigkeit_durchschnitt;
    
    			/* Geschwindigkeit_max in Array schreiben */
    			times[i][spalte++] = geschwindigkeit_max;
    		}
    
    		/* nach durchschnittlicher Laufgeschwindigkeit sortieren */
    		/* die Laufgeschwindigkeit ist im Array in Spalte 7 */
    		sort(times);
    
                    System.out.println("\nLaufer wurden sortiert"); 
    
    		/* In die Textdatei schreiben */
    		try {
    			f1 = new FileWriter("Ausgabe.txt");
    
    			/* Tabellenkopf schreiben */
    			f1.write("NR.\tT1\tT2\tT3\tT4\tTGes.\tvAvg.\tvMax\r\n");
    
                            /* Tabellenkopf auf Konsole ausgeben*/
                            System.out.println("\nNR.\tT1\tT2\tT3\tT4\tTGes.\tvAvg.\tvMax\r");
    
    			/* Schreiben aller Läufer in Textdatei */
    			for (int i=0; i < anzahlDerLaufer_input; i++) 
    			{
    				spalte = 0;
    				/* Das Array hat 8 Spalten */
    				while (spalte < 8) 
    				{
                                            /* Ausgabe auf Konsole */  
                                            System.out.print(times[i][spalte]+"\t");
    
                                            /* In Textdatei schreiben */
    					f1.write(times[i][spalte++]+"\t");                                    
    				}
    
    				f1.write("\r\n");
                                    System.out.println("\r");
    			}   
    
    			f1.close();
    
    		} catch (IOException e) {
    			System.out.println("Fehler beim Erstellen der Datei");
    		}
    
                    System.out.println("\nDie Tabelle erfolgreich in die Textdatei: Ausgabe.txt gespeichert");
    
      }
    
      /* Quicksort: */  
      /* Im Folgenden sind die wichtigsten Schritte des Quicksort Algorithmus aufgelistet: */ 
      /* 1. Man wähle ein willkürliches (!) Element aus dem Array (wird Pivot, oder Partition Element genannt) */
      /* 2. Man sortiere das Array so, dass alle Werte, die kleiner als das Partition Element sind links */ 
      /* davon stehen und alle die größer sind, rechts davon. (Vorausgesetzt, wir sortieren aufsteigend) */
      /* 3. Das Array ist nun in 2 Hälften geteilt. Das Partition Element steht dabei schon an seiner finalen */ 
      /* Position (schließlich wurde das Array ja nach ihm sortiert) */
      /* 4. Für jede der beiden so entstandenen Hälften werden nun Schritte 1 - 4 ausgeführt. */
    
      public static void sort (int [][] array)  
      {  
    	  quickSort (array,0,array.length - 1);  
      }  
    
      private static void quickSort(int in_array[][], int left, int right)  
      {  
    	  int current, last;  
    	  if (left >= right) return;  
    	  swap(in_array, left, (left+right)/2);  
    	  last = left;  
    	  for (current = left + 1; current <= right; current++)  
    	  {  
    		  if (in_array[current][5] < in_array[left][5])  
    			  swap(in_array, ++last, current);  
    	  }  
    	  swap(in_array, left, last);  
    	  quickSort(in_array, left, last-1);  
    	  quickSort(in_array, last+1, right);  
      }  
    
      private static void swap(int in_array[][], int i, int j)  
      {  
    	  int[] temp;  // "unter"-array vertauschen
    	  temp = in_array[i];  
    	  in_array[i] = in_array[j];
    	  in_array[j] = temp;  
      }
    }
    

    nur ein fehler is!!!

    } catch (IOException e) {
    			System.out.println("Fehler beim Erstellen der Datei");
    		}
    
                    System.out.println("\nDie Tabelle erfolgreich in die Textdatei: Ausgabe.txt gespeichert");
    

    wenn ich keine rechte hab eine textdatei zu erstellen dann wird auch geschrieben textfile wurde erfolgreich erstellt, wie kann man das umgehen??? helft mir!!!

    cu 😃


Anmelden zum Antworten