Autor Beitrag
Henri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Do 05.01.17 11:48 
hallo leute,
ich bin Anfäger in C#, und möchte ich eine Klasse basteln, die mir Nummer generierer werden
Meinen Code sieht mehr nach Java aus, es geht darum meine Kenntnisse in java sind besser als C#
Ich habe mich schon seit paar Tage mit C# syntax gequält , leider schaffe ich nicht immer nur Fehler.
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?

Vielen Dank in Voraus

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
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 addNummer() {
        nummer = kennzahl  + jahreszahl + startNnr ;
        nummernArray.add(nummer);
        startNnr ++;
    }

}



Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Do 05.01.2017 um 11:06
Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt


Zuletzt bearbeitet von Henri am Fr 06.01.17 09:08, insgesamt 1-mal bearbeitet
Jumpy
Hält's aus hier
Beiträge: 23
Erhaltene Danke: 5



BeitragVerfasst: Do 05.01.17 11:55 
Also irgendwie fehlt da eine Angabe wie viele Nummern erzeugt werden sollen und dann eine Schleife von 200 bis 200+AnzahlZuErzeugendeNummern. Damit würde ich erst mal weiter machen.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 05.01.17 12:06 
Hallo und :welcome:

ich hatte die letzten Tage schon deinen Cross-Post myCSharp.de - Zahl aus drei anderen Zahlen erstellen mitverfolgt (Taipi88 hat dir schon konkrete Vorschläge zur Umsetzung gemacht).

Solange du nicht ersteinmal kompilierfähigen C#-Code erzeugst, wird man dir kaum helfen (können).
Henri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Do 05.01.17 12:23 
Hier compiliere ich es rextester.com/

Moderiert von user profile iconTh69: Vollzitat entfernt.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 05.01.17 12:58 
Dann zeig uns auch denn Code den du da compilierst und nicht irgendeinen anderen Java Code der das gleiche Problem löst.

Zitat:
Meinen Code sieht mehr nach Java aus, es geht darum meine Kenntnisse in java sind besser als C#


Wenn dein Ansinnen ist C# zu lernen ist dein vorgehen denkbar ungeeignet. Du versuchst Code zu übersetzen und ~lernst~ dabei wie man Java artigen Code in C# schreibt aber nicht wie man richtig mit C# programmiert. Wenn du einfach was funktionierendes willst ohne es zu verstehen halbwegs ok. Zum lernen ist das Mist. Dein Problem ist so einfach zu beschreiben und so begrenzt das du denn Java wegwerfen solltest und von Grund auf das Problem mit C# lösen solltest. Auch da sind es dann nur eine handvoll Zeilen. So hat das dann auch einen gewissen Lerneffekt anstatt nur Blind das Problem zu lösen.
Henri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Do 05.01.17 13:00 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
using System;
using System.Collections.Generic;
using System.Globalization;

public class NumberGenerator {

    private const string kennzahl = "80";
    private string jahreszahl;
    private int startNnr = 200;
    private string nummer;
    private List<string[]> nummernArray = new List<string[]>();

    public NumberGenerator() {
        DateTime ldt1 = DateTime.Now;
        string year = ToString(ldt1.GetYear());

        jahreszahl = ToString(year[2]) + ToString(year[3]);
    }

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

}


Moderiert von user profile iconTh69: Vollzitat entfernt.
Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt


Zuletzt bearbeitet von Henri am Fr 06.01.17 09:07, insgesamt 1-mal bearbeitet
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 05.01.17 14:34 
Wenn du das kompilierst wirst du Fehlermeldungen erhalten die du einfach abarbeiten solltest. Die sind in diesem Fall so eindeutig das ich bei den Anfangsproblemen hier wenig Lust habe da gezielt zu helfen.

Zum Beispiel wird der Compiler über den Aufruf von GetYear fallen und dir sagen das es eine solche Methode bei einem DateTime nicht gibt. Das Problem ist jetzt nichts geheimnisvolles sondern man muß mur das tun was man immer tun muß. Man schlägt DateTime in der Doku nach uns schaut wie man das Jahr da raus bekommt. Diese Aufgabe(n) müssen wir dir nicht abnehmen.

Das es schwer ist an Hilfe zu kommen wenn man Code auf irgendeiner Webseite ausprobiert anstatt eine (kostenlose!) Entwicklungsumgebung zu benutzten weil man da nicht einfach F1 klicken kann ist dann auch eher ein Problem wo wir nicht als Dokumentatons/Hilfesystemersatz weiterhelfen müssen. Jeder hier hat nur Lust zu helfen wenn man beim gegenüber ein Mindestmaß an Eigenintiative feststellen kann. Dieses Gefühl geht mir gerade bei dem was ich hier sehe ab.
Henri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Fr 06.01.17 11:36 
Hallo,

habe ich meinen Code verbessern es sieht nun so aus:

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
using System;
using System.Collections.Generic;
using System.Globalization;

public class NumberGenerator {

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

    public NumberGenerator() {
        
        string ldt = DateTime.Now.ToString();
        DateTime datevalue = (Convert.ToDateTime(ldt.ToString()));

        string year = datevalue.Year.ToString();
        
        string myString1 = year[2].ToString();
        string myString2 = year[3].ToString();

        jahreszahl = myString1 + myString2; 
    }

    public string addNummer() {
        nummer = kennzahl  + jahreszahl + startNnr ;
        nummernArray.Add(nummer);
        startNnr ++;
    }
 
}


Fehlermeldung bezüglich den Rügabewert
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Fr 06.01.17 12:04 
Sieh dir an, was in der Fehlermeldung steht.

Rückgabewerte findest du üblicherweise bei Methoden. Da du nur eine (richtige) Methode hast, schau dir die nochmal genau an (Ist diesmal auch das gleiche wie in Java).

Grüße
Julian

PS:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
//doppelt-gemoppelt
string ldt = DateTime.Now.ToString();
DateTime datevalue = (Convert.ToDateTime(ldt.ToString()));

string year = datevalue.Year.ToString();


// DateTime.Now ist ja schon ein DateTime mit einem Year-Wert
string jahreszahl = DateTime.Now.Year.ToString().Substring(2);
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 06.01.17 13:24 
Jetzt fehlt zumindest nicht mehr viel damit es kompiliert.
Frag dich warum deine AddNumber Methode laut Signatur einen string zurückgeben will deine Methodenimplementierung aber nichts dergleichen tut. Dein Java Code hatte bereits das gleiche Problem.
Ich weiß leider nicht was du genau vor hast, also welche der beiden Lösungsmethoden a.) die Signatur ändern so das die Methode auch behauptet das sie keinen Wert zurückliefert oder b.) die Implementierung ändern so das wie was zurückliefert.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 06.01.17 14:10 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 06.01.17 14:25 
Zitat:
Es kann gut sein, dass er nach seiner Ausdrucksweise, kein Einheimischer ist, wohl ein Nachbar aus dem Westen, und sich schwer damit tun wird, wenn ihr fachsimpelt.
Wäre gut, wenn sich einer dazu entschließen würde, es auf den Punnkt zu bringen. ;)


Öhm, zumindest bei mir ist da nicht der Grund das ich so helfe wie ich helfe. Ich möchte einfach das er sein Problem mit unserer Hilfe löst und nicht wir für ihn.
Ich möchte es nicht einfach auf den Punkt bringen und sagen/zeigen "so gehts".
Das versuche ich eigentlich grundsätzlich immer. Dachte auch das wäre weitestgehend Konsens im Forum.
lapadula
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Fr 06.01.17 16:33 
Ich bin auch Anfänger und hab aus langeweile mich eben an der Aufgabe versucht.

Habe das ganze als eine einfache WindowsApplication mit einem Button erstellt, der diese 2 Methoden aufruft, in die List hinzufügt und ausgibt.
Ich hoffe ich habe die Aufgabe richtig verstanden.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication4
{
    public partial class Form1 : Form
    {
        private const string kennzahl = "80";
        private string jahreszahl;
        private int startNnr = 200;
        private string nummer;
        private List<string> nummernArray = new List<string>();

        public Form1()
        {
            InitializeComponent();
        }

        public void NumberGenerator()
        {
            string ldt = DateTime.Now.Year.ToString();
            jahreszahl = ldt.Substring(2);
        }

        public void addNummer()
        {
            nummer = kennzahl + jahreszahl + startNnr.ToString();
            nummernArray.Add(nummer);
            startNnr++;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            NumberGenerator();
            addNummer();
            nummernArray.Add(nummer);
            MessageBox.Show(nummer);
        }
    } 
}
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 06.01.17 20:09 
- Nachträglich durch die Entwickler-Ecke gelöscht -