Variable weitergeben



  • Hallo!

    Wie kann ich den Wert der int Variable 'e'
    aus der Klasse Ihk der Klasse Schreiben
    übergeben, so daß die Mehtode bewerten()
    (der Schreiben) das Array 'a' nicht so
    wie es hier der Fall ist auf 5, sondern
    eben abhänging davon macht wieviele Zahlen
    der User auf der Kommandozeile angibt.
    Denn wenn man anstatt 'java Ihk 4 5 6 2 9',
    'java Ihk 4 5 6 2' nur mit zahlen eingibt
    führt es schon zu Problemen.

    Grüße

    import java.io.*; 
    import java.util.*; 
    
    public class Schreiben 
     { 
    
        public void write(String fileN, String[] daten) 
         { 
            try 
            { 
    
            PrintWriter pwr = new PrintWriter(new FileWriter(fileN)); 
    
            for(int i=0; i<daten.length; i++) 
            { 
    
              pwr.print(daten[i]); 
              pwr.print(";");    
            } 
            pwr.close(); 
            } 
            catch (Exception ex) 
            { 
             System.out.println("Kann nicht schreiben");    
            } 
    
        } 
    
        public String lesen(String fileN) 
        { 
           String kl = null; 
           try 
            { 
            BufferedReader bf = new BufferedReader(new FileReader(fileN)); 
           kl = bf.readLine(); 
    
           } 
    
           catch (Exception ex) 
            { 
             System.out.println("Kann nicht lesen"); 
    
            } 
    
           return kl; 
    
        } 
    
        public void bewerten(String fileN) 
        { 
         String son = lesen(fileN); 
         System.out.println(son); 
         StringTokenizer stz = new StringTokenizer(son,";"); 
         String bon; 
         int[] a = new int[5]; 
    
          while(stz.hasMoreTokens()) 
          { 
            int gr =0; 
            int klein =0; 
            for(int i=0; i<a.length; i++) 
            { 
             bon = stz.nextToken(); 
             a[i] = Integer.parseInt(bon); 
             if(a[0]< a[i]) 
             gr = a[i]; 
             else 
             klein =a[i]; 
    
            } 
            System.out.println("\n"); 
              System.out.println(" Beste Leistung\t" + gr); 
              System.out.println(" Schlechteste Leistung\t" +klein); 
          } 
    
        } 
    
     }
    

    Hier die zweite Klasse

    import java.io.*; 
    
    public class Ihk 
     {    
    
       public static void main(String[] args) 
    
         { 
    
           int e; 
           e =args.length; 
           String[] fg = new String[e];  
           for(int i=0; i<e; i++) 
           { 
             fg[i] = args[i]; 
           } 
    
           Schreiben s = new Schreiben(); 
    
           s.write("vwa.txt",fg ); 
    
           s.bewerten("vwa.txt"); 
         } 
    
      }
    


  • ad flexible Größe des int[] a: Wenn du von der Klasse Ihk die Methode bewerten() der Klasse Schreiben aufrufst, kannst du die Var. e der Klasse Ihk als Parameter an die Methode übergeben.

    ad Sortieren des Arrays: Da gibt es die praktische Methode sort() der Klasse Arrays.

    Nachfolgend mein Lösungsansatz:

    public class Ihk{
    	public static void main(String[] args){
        	int e;
    		e = args.length;
           	String[] fg = new String[e];
           	for(int i=0; i<e; i++){
            	fg[i] = args[i];
           	}
    
    		Schreiben s = new Schreiben();
    		s.write("vwa.txt",fg);
    		s.bewerten("vwa.txt",e);    //Var. e als Parameter übergeben!
    	}
    }
    

    ...und nun noch die Methode bewerten() aus der Klasse Schreiben():

    public void bewerten(String fileN,int e){
    		String son = lesen(fileN);
    //     	System.out.println("gelesen: "+son);
         	StringTokenizer stz = new StringTokenizer(son,";");
         	int[] a = new int[e];
    
          	while(stz.hasMoreTokens()){
            	for(int i=0; i<a.length; i++){
             		a[i] = Integer.parseInt(stz.nextToken());
    //         		System.out.println("a["+i+"] = "+a[i]);
              	}
          	}
    
          	Arrays.sort(a);		//sortiert das int-Array aufsteigend
        	System.out.println("\n");
          	System.out.println(" Beste Leistung\t" + a[a.length-1]);  	//das letzte Element im sortierten Array
          	System.out.println(" Schlechteste Leistung\t" +a[0]);		//das 1. Element im sortierten Array
        }
    

    Hoffe, es hilft.



  • Seppelina vielen dank für die so ausführliche Antwort.
    Gibt es auch noch andere Wege??

    Grüße


Anmelden zum Antworten