Hallo Leute, finde das Forum sehr gut..
jetzt mal mein erster Beitrag, hab versucht eine programmieraufgabe von gailer-net.de zu machen und zwar die auf chapter 83 aufgabe 1
Nun, wie kann ich diesen code besser machen? bei mir hab ich keine andere klasse sondern es ist alles in Main verpackt..
mfg scrubs
Code:
/**
*
*/
package com.test;
import java.io.*;
import java.util.Random;
/**
* @author scrubs
*
*/
public class Main {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
System.out.println("Enter HighValue: ");
BufferedReader inDataHV = new BufferedReader(new InputStreamReader(System.in));
String highValue = inDataHV.readLine();
System.out.println("Enter how many per line: ");
BufferedReader inDataPL = new BufferedReader(new InputStreamReader(System.in));
String perLine = inDataPL.readLine();
System.out.println("Enter how many integers: ");
BufferedReader inDataInt = new BufferedReader(new InputStreamReader(System.in));
String inInt = inDataInt.readLine();
//System.out.println(highValue + " " + perLine + " " + inInt);
System.out.println("Enter Filename: ");
BufferedReader inFileName = new BufferedReader(new InputStreamReader(System.in));
String fileName = inFileName.readLine().trim();
BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
int intHowMany = Integer.parseInt(inInt);
int intHighValue = Integer.parseInt(highValue);
int intPerLine = Integer.parseInt(perLine);
System.out.println(intHowMany);
System.out.println(intHighValue);
System.out.println(intPerLine);
int zahl;
Random randomInt = new Random();
int n=0; // Hilfscounter für die nächste Zeile.
for (int i=0; i < intHowMany; i++){
if(n==intPerLine){
out.newLine();
n=0;
intHowMany++; //erhöhen, sonst fehlt immer 1 bei diesem counter
}
else{
zahl = randomInt.nextInt(intHighValue);
out.write(zahl + " ");
n++;
}
}
out.flush();
out.close();
}
}
es reicht, einen BufferedReader anzulegen, nicht 4x den gleichen, wobei du dann auch mit den Namen in Schwierigkeiten kommst
dann wird dein Code noch kürzer und ein 70 Zeilen-Programm passt durchaus in eine main,
du hast keinerlei Verzweigung/ Wiederholung/ doppelte Datenbestände oder sonstige Dynamik,
insofern wäre der Aufruf von Unteroperationen nur eine versteckte durchgängige main,
Objekte brauchst du auch noch nicht
denkbar wäre bisher nur eine Hilfsoperation a la
int intHowMany = Helper.frageNachInt("Enter HighValue: ");
ich kenn Deine Vorkenntnisse nicht, aber sieht schon sehr gut aus.
Die Variablennamen sind auch OK, obgleich ich verfechter von wirklich sprechenden Namen bin. Dh, bei mir sind Variablennamen auch schonmal 15 zeichen lang, son´fern es dem Verstädnis dient. Abkürzungen wie PL mach ich selten, spricht ja nixhts gegen ein "nDigitsPerLine". Geschmackssache...
Hab ich de Aufgabe richtig verstanden?
Würde nämlich in der ersten for-Schleife eine zweite starten, die die int pro Zeile ausgibt und nicht mit Hilfszählern arbeiten. Ist aber nicht wirklich einFehler. Führen ja mehrere Wege nach Rom.
Das parsen der Strings muss ambesten noch in einen try-catch, damit Fehleingaben abgefagen werden. Aber dann bite nicht catch Exception, sondern schon die richtige abfangen.