Laden...

Zahl aus drei anderen Zahlen erstellen

Erstellt von Henri vor 7 Jahren Letzter Beitrag vor 7 Jahren 3.262 Views
H
Henri Themenstarter:in
55 Beiträge seit 2016
vor 7 Jahren
Zahl aus drei anderen Zahlen erstellen

hallo leute,
ich bin Anfäger in C#, und möchte ich eine Klasse basteln, der mir nummer generierer werden
80 ist ein Kennzahl
16 ist Zweistellige Jahreszahl
200 ist die Startnummer
die generieren Nummer sollte so aussehen

8016200,8016201, 8016202,...

habe ich was versucht, leider klappt es nicht so, vielleicht kann jemandem hier mir helfen?


public class NumberGenerator {

	private final string kennzahl = "80";
	private string jahreszahl;
	private int startNnr = 200;
	private string nummer;
	private ArrayList<string> nummernArray = new ArrayList<string>();

	public NumberGenerator() {
		LocalDateTime ldt1 = LocalDateTime.now();
		string year = string.valueOf(ldt1.getYear());
		
		jahreszahl = string.valueOf(year.charAt(2)) + string.valueOf(year.charAt(3));
	}

	public string addProjektNummer() {
		nummer = kennzahl  + jahreszahl + startNnr ;
		nummernArray.add(nummer);
		startNnr ++;
	}
	
}

T
6 Beiträge seit 2016
vor 7 Jahren

In deinem Beispiel werden die Zahlen addiert.
Ich weiß nicht, ob das zu umständlich ist, aber ich würde die Zahlen in einen string umwandeln (.ToString()), diese strings zusammenführen (funktioniert mit dem + - Operator) und dann, wenn du es willst, wieder in einen Integer konvertieren (int.Parse())

Tristan

121 Beiträge seit 2016
vor 7 Jahren

In deinem Beispiel werden die Zahlen addiert.
Ich würde die Zahlen in einen string umwandeln (.ToString()), diese strings zusammenführen (funktioniert mit dem + - Operator) und dann, wenn du es willst, wieder in einen Integer konvertieren (int.Parse())

Das stimmt so nicht ganz.
"kennzahl" und "jahreszahl" liegen bereits als string vor.
Nur die startNnr (wieso nicht "startNr"?) ist int; wenn die beim hinzufügen zu "nummer" noch in einen string konvertiert würde, müsste es klappen.

1.040 Beiträge seit 2007
vor 7 Jahren

Der Code funktioniert ohne Probleme - wenn man ihn auf C# umschreibt und kompilierbar macht. 😉

diese strings zusammenführen (funktioniert mit dem + - Operator)

Besser: String.Concat

Nur die startNnr (wieso nicht "startNr"?) ist int

Dadurch, dass auf der linken Seite vom "+" ein string steht, nutzt der Compiler den entsprechenden Operator der String-Klasse (+(string left, object right)), dadurch funktioniert es einwandfrei.
EDIT sagt noch: also unter C# funktioniert es so. Der oben stehende Code ist Java, evtl. ist das Verhalten da anders... 😉

H
Henri Themenstarter:in
55 Beiträge seit 2016
vor 7 Jahren

Hey p!lle,
hast du recht habe ich ein bisschen bessere Kenntnisse in Java als in C# deswegen bin ich nicht mit dieser Klasse in C# klar gekommen. sonst kannst du deine Vorschlag hier veröffentlichen?
Danke

1.040 Beiträge seit 2007
vor 7 Jahren

Nein, weil der Lerneffekt dann gleich 0 ist. =)

Mir ist auch nicht ganz klar, warum du Java schreibst [1], wenn du C# möchtest, unabhängig davon, dass du dich mit Java besser auskennst. Andersrum würde man ja auch kein C# schreiben, wenn man Java machen will.
Man sucht sich stattdessen die entsprechenden Befehle der anderen Programmiersprache heraus um seinen Code zu schreiben und vor allem zu lernen.

Spätestens wenn es nicht kompiliert, schaut man doch nach, was falsch ist.
Der Code ist ja prinzipiell sogar richtig, nur eben mit falscher Syntax. 😉

[1] Als Ausgangsbasis macht es evtl. Sinn, um es danach Stück für Stück zu übersetzen

5.658 Beiträge seit 2006
vor 7 Jahren

Weeks of programming can save you hours of planning

H
Henri Themenstarter:in
55 Beiträge seit 2016
vor 7 Jahren

P!lle,
ich arbeite mit einem Programm es funktioniert mit C# und Java, einige stelle muss man den Code in Java schreiben und wo anders mit C#.

aber kann du mir mal dein Code sehen lassen ? oder was hast du geändert ?

5.658 Beiträge seit 2006
vor 7 Jahren

Hi Henri,

so funktioniert das Forum nicht. Wir schreiben oder debuggen dir nicht deinen Code. Bitte beachte [Hinweis] Wie poste ich richtig?, Punkt 1.1, 4 und besonders 4.2!

Weeks of programming can save you hours of planning

H
Henri Themenstarter:in
55 Beiträge seit 2016
vor 7 Jahren

Hi MrSparkle,
wenn du siehst, habe ich schon etwas geschrieben, habe ich nicht erwartet, dass jemand einen Code für mich schreibt.
Mein Code lauft nicht richtig deswegen, vielleicht könnte jemandem mir sagen oder etwas zusätlich schreibt, aber was ich weiss, meinen Code ist nahe von der Lösung.

Danke

2.207 Beiträge seit 2011
vor 7 Jahren

Hallo Henri,

nimm deinen schon geschriebenen Code und versuch mal ihn im Visual Studio mit C# auszuführen. Das wird nicht gehen, da falsche Syntax. Das bekommst du aber raus. "Final" weg, ArrayList vermeiden, nimm eine normale List dafür, das DateTime-Konstrukt mal anschauen (Doku) und Rückgabewert der Methode beachten und dann sollte das schon klappen. Ist ja nicht soviel Code. Du wirst sehen, es geht einfacher als gedacht.

Gruss

Coffeebean

1.029 Beiträge seit 2010
vor 7 Jahren

Hallo Henri,

geschrieben hast du irgendwas in Java. Nicht in C#. Dein Programm "läuft" nicht nur nicht richtig - es kann so überhaupt nicht kompilieren.

Warum?

  1. Das Schlüsselwort "final" gibt es nicht - in C# verwendet man dafür z.B. "const"
  2. Du verwendest haufenweise Java-spezifische Funktionen und Klassen, unter Anderem:
  • LocalDateTime.now()
  • string.valueOf()
  • LocalDateTime.getYear()
  • string.charAt()
  1. Eine generische ArrayList gibt es nicht in C# - du suchst wahrscheinlich eine List<string>

[Code entfernt]

LG

PS: Wenn dieser Nummerngenerator automatisiert dauerhaft im Hintergrund läuft würde ich mir an deiner Stelle überlegen, ob ich das tatsächlich als Klassenvariable halten möchte.

1.040 Beiträge seit 2007
vor 7 Jahren

~~Sorry Taipi88, aber ich finde deine Antwort vollkommen kontraproduktiv.

Wenn er C# haben möchte, dann muss er auch C# schreiben.
Ich schiebe ja auch nicht ein Baguette in den Backofen und wundere mich dann am Ende, dass es keine Pizza wurde.

Denn wie von allen schon richtig festgestellt, es ist ja kein einfaches "läuft nicht", es kompiliert erst gar nicht - und diese ganzen Fehler hätte er alleine beheben können. Die Logik ist ja sogar korrekt gewesen.
Die ganzen Punkte unter "Warum?" hätte er beim Bauen selber herausgefunden.

Aus meiner Sicht ist es ein Schnipsel aus dem Netz, der jetzt von dir für ihn übersetzt wurde.
Ich bin raus. 🙄~~

EDIT²:
Nach den ganzen Hinweisen auf die allgemein falsche Syntax, hat Taipi88 nun auch konkret auf die falschen Stellen hingewiesen. Damit sollte Henri den Code wohl zum Laufen kriegen. 👍