C# - Brauch kurz eure Hilfe!

Norbert Eder

Erfahrenes Mitglied
Dann gleich noch zwei Punkte:

Niemals, aber wirklich NIEMALS Umlaute in deinen Variablennamen verwenden und wenn wir schon dabei sind ... eine Programmiersprache ist meist auf Englisch, ergo würde ich an deiner Stelle auch die Variablen englisch halten. Macht vor allem dann Sinn, wenn mal in einem Team etc. gearbeitet wird. Daher am besten gleich früh angewöhnen.
 

MFC openGL

Erfahrenes Mitglied
Alexander12 hat gesagt.:
Code:
// Das ist die ArrayList für die Wörter, die einglesen werden:
ArrayList wörter = new ArrayList();
 
// Die Stringarrays in welche die Zeilen unterteilt werden:
public string[] wort_1, wort_2, wort_3, wort_4, wort_5, wort_6, wort_7, wort_8, wort_9, wort_10; 
ARRAY VERWENDEN
 
// Nun die Strings wo die Lösungen drinstehen (l steht für Lösung):
public string l1, l2, l3, l4, l5, l6, l7, l8, l9, l10;
ARRAY VERWENDEN
 
// Das ist das Click-Event, das die Zufallszahlen wählt und die Wörter 
// in die Labels schreibt:
 
void Button12Click(object sender, System.EventArgs e)
{
	StreamReader Wortleser = new StreamReader(comboBox2.Text);
	string Zeile = String.Empty;
	while ( (Zeile = Wortleser.ReadLine()) != null )
	{
 
		wörter.Add(Zeile);
	}
 
// Zeilen im Array "wörter" werden gezählt:
double zahl = array1.Count - 1;
 
if(zahl > 10)
{
// Das sind die Zahlen, die für den Zufallsgenerator wichtig sind:
double zahl11, zahl21, zahl31, zahl41, zahl51, zahl61, zahl71, zahl81, zahl91, zahl101;
ARRAY VERWENDEN
// Die Zahlen werden nun gerundet, dass sie für den Zufalssgenerator brauchbar sind:
int zahl1 = Convert.ToInt16(Math.Round(zahl / 10,1));
int zahl2 = Convert.ToInt16(Math.Round(zahl * 2,1));
int zahl3 = Convert.ToInt16(Math.Round(zahl * 3,1));
int zahl4 = Convert.ToInt16(Math.Round(zahl * 4,1));
int zahl5 = Convert.ToInt16(Math.Round(zahl * 5,1));
int zahl6 = Convert.ToInt16(Math.Round(zahl * 6,1));
int zahl7 = Convert.ToInt16(Math.Round(zahl * 7,1));
int zahl8 = Convert.ToInt16(Math.Round(zahl * 8,1));
int zahl9 = Convert.ToInt16(Math.Round(zahl * 9,1));
int zahl10 = Convert.ToInt16(Math.Round(zahl * 10,1));
SCHLEIFE VERWENDEN
// So, nun der eigentliche Zufallsgenerator:
Random zz = new Random();
try
{
Methode VERWENDEN
	// Block 1 (Links) füllen
	// Feld 1 füllen
	string Line1 = wörter[zz.Next(0, zahl1)].ToString();
	wort_1 = Line1.Split(new char[] {','});
	this.wort1.Text = wort_1[1];
	l1 = wort_1[2];
 
	// Feld 2 füllen
	string Line2 = wörter[zz.Next(zahl1, zahl2)].ToString();
	wort_2 = Line2.Split(new char[] {','});
	this.wort2.Text = wort_2[1];
	l2 = wort_2[2];
 
	// Feld 3 füllen
	string Line3 = wörter[zz.Next(zahl2, zahl3)].ToString();
	wort_3 = Line3.Split(new char[] {','});
	this.wort3.Text = wort_3[1];
	l3 = wort_3[2];
 
	// Feld 4 füllen
	string Line4 = wörter[zz.Next(zahl3, zahl4)].ToString();
	wort_4 = Line4.Split(new char[] {','});
	this.wort4.Text = wort_4[1];
	l4 = wort_4[2];
 
	// Feld 5 füllen
	string Line5 = wörter[zz.Next(zahl4, zahl5)].ToString();
	wort_5 = Line5.Split(new char[] {','});
	this.wort5.Text = wort_5[1];
	l5 = wort_5[2];
 
	// Block 2 (rechts) füllen
	// Feld 6 füllen
	string Line6 = wörter[zz.Next(zahl5, zahl6)].ToString();
	wort_6 = Line6.Split(new char[] {','});
	this.wort6.Text = wort_6[1];
	l6 = wort_6[2];
 
	// Feld 7 füllen
	string Line7 = wörter[zz.Next(zahl6, zahl7)].ToString();
	wort_7 = Line7.Split(new char[] {','});
	this.wort7.Text = wort_7[1];
	l7 = wort_7[2];
 
	// Feld 8 füllen
	string Line8 = wörter[zz.Next(zahl7, zahl8)].ToString();
	wort_8 = Line8.Split(new char[] {','});
	this.wort8.Text = wort_8[1];
	l8 = wort_8[2];
 
	// Feld 9 füllen
	string Line9 = wörter[zz.Next(zahl8, zahl9)].ToString();
	wort_9 = Line9.Split(new char[] {','});
	this.wort9.Text = wort_9[1];
	l9 = wort_9[2];
 
	// Feld 10 füllen
	string Line10 = wörter[zz.Next(zahl9, zahl10)].ToString();
	wort_10 = Line10.Split(new char[] {','});
	this.wort10.Text = wort_10[1];
	l10 = wort_10[2];
}
catch(Exception ex)
{
	MessageBox.Show(ex.ToString());
}
else
{
	MessageBox.Show("Es müssen mindestens 10 Wörter in der Worliste sein. In der Wortliste " + comboBox2.Text + " sind aber nur " + zahl + " Wörter!");
}
}

Nur mal von wegen "ist das besser ?". Nein ist es nicht. Und jede Funktion hat einen Funktionskopf, in der du kurz sagst wozu die Methode da ist, welche Parameter sie hat und was sie zurückgibt (evtl auch Fehlerfälle)

Und wenn du das umsetzt, ist deine Methode höchstens noch 1 Seite lang, und dann kann man das auch lesen. Je kleiner die Funktion ist, je besser kann man sie verstehen.

Gruss

MFC OpenGL
 

Nico Graichen

Erfahrenes Mitglied
MFC openGL hat gesagt.:
Nur mal von wegen "ist das besser ?". Nein ist es nicht. Und jede Funktion hat einen Funktionskopf, in der du kurz sagst wozu die Methode da ist, welche Parameter sie hat und was sie zurückgibt (evtl auch Fehlerfälle)
richtig.
Gib mal in der Zeile vor einer Funktion /// ein. Damit wird automatisch das Tag Summary eingefügt, in dem du die Funktionsbeschreibung einfügst. Außerdem wird auch der Rückgabetyp, und die Parameter eingefügt. Alle was du da einträgst, taucht dann auch in der Intellisens auf.