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