Anfänger braucht Hilfe mit Java, habe 2 Fragen?

Hallo Leute,

wie schon im Titel steht hätte ich 2 Fragen, also:

  1. Habe eine Programm zu programmieren welches feststellt ob die gegebene Zahl eine narzisstische Zahl ist. Jedoch bleib ich schon ganz am Anfang stecken, da wir weder die Klassen Math noch String verwenden dürfen. Wie kann ich z.B. die Zahl 153 auseinander nehmen, damit ich die 1, 5 und die 3 habe? Ich habe mir gedacht die Zahl z.B. durch 100 zu teilen dann hätte ich ja schon die 1 mit Nachkommastellen, welche ich aber abschneiden müsste. Könnte ich die Klasse String verwenden wäre es wahrscheinlich etwas leichter. Bin ich hier auf dem richtigen Weg?
  2. Bei einer anderen Aufgabe müssen wir einen "Rautengenerator" programmieren. Habe ein Bild angehängt damit die Frage etwas verständlicher ist. Mit dem Scanner lese ich eine ungerade Zahl ein (bei geraden Zahlen soll es abbrechen, soweit so gut), mit der ich die Höhe der Raute angebe. Ganz rechts wäre mit Höhe 1, Mitte mit Höhe 5 und links mit Höhe 11. Aber mit was genau fange ich hier an? Meine Überlegung war 2 for Schleifen, mit der einen gebe ich die Zeilen an und mit der 2 verschachtelten Schleife zeichne ich die Rauten. Wäre das soweit korrekt?

Ich bitte hier nicht um fix fertige Lösungen sondern um ein paar Tipps bzw. Lösungsansätze wie ich hier vorgehen soll, da mich diese Aufgaben in den Wahnsinn treiben, wenn ich noch länger darüber grüble.

MfG

Josef

Bild zum Beitrag
PC, Computer, programmieren, Java, Informatik, Quellcode, IntelliJ IDEA
Ideen für ein großes Java-Projekt?

Ich bin 16 Jahre alt, gehe in die elfte Klasse und habe etwas mehr als drei Jahre Java-Erfahrung. Nun möchte ich im Informatik-Unterricht bis zum Ende des Schuljahres (Ende Juni) ein etwas größeres Projekt umsetzen, weil ich nicht mehr am regulären Unterricht teilnehmen muss. Pro Woche habe ich zweimal 90 Minuten Zeit. Ich bin auch bereit, zu Hause etwas Zeit zu investieren.

Nun suche ich eine gute Idee für ein Projekt, welches gut für diese Zeitspanne passt und welches meine Kenntnisse auch erweitern würde. Im Internet finde ich die typischen Projekte (Datenstrukturen, Sortieralgorithmen, Suchalgorithmen, Bäume, Infix Evaluator etc.). Diese habe ich alle schon umgesetzt und das wäre auch viel zu wenig für den langen Zeitraum. Außerdem gibt es jede Menge Ideen für alle möglichen Systeme. Allerdings glaube ich, dass diese zwar zeitaufwendig sind, jedoch nicht wirklich komplex.

Ich suche ein sehr schwieriges Projekt, eine Challenge, um mein Wissen zu erweitern und Techniken einzusetzen, die man sonst eher selten einsetzt. Das Projekt soll schließlich Spaß machen und mir auch etwas bringen. Hat jemand eine gute Idee?

Toll wäre, wenn es auch etwas mit dem aktuellen Unterrichtsthema (Graphen, Bäume, TSP, Shortest Path) zu tun hätte. Das ist aber nicht Pflicht, es kann auch etwas Anderes sein. Einen Server würde ich auch gerne einbauen, ich besitze nämlich einen eigenen. Vielen Dank für alle Vorschläge!

EDIT

Ich danke allen für die vielen Tipps und Vorschläge. Ich schau mal, was ich daraus mache und wie ich die Ideen zu einem spannenden Projekt kombinieren kann. Vielen Dank!

Computer, Schule, programmieren, Java, Informatik, Software Engineering, Softwareentwicklung
C++ zweidimensionalen Array an Funktion übergeben?

Ja ich weiß das wurde schon hunderte male durchgekaut aber bei Fragen wie dieser geht es meist darum die größe des Arrays zu ermitteln aber mir geht es nur darum den Array zu übergeben und auf ihn zuzugreifen (ich weiß wenn man ihn "normal"(also ohne Zeiger auf ihn)übergibt kann man ihn nicht ändern aber das will ich auch garnicht ich will ihn einfach nur auslesen.(Das ganze soll übrigens mal das spiel des lebens werden)

Hier der Code:

#include<iostream>
#include<windows.h>
using namespace std;
const int x=12; const int y=8;


void ausgeben(char feld[][]){ int j,i;


for(i=0;i<y;i++){


    for(j=0;j<x;j++){


        if(feld[i][j]){             cout<<"#";         }else{             cout<<" ";                         }         }  cout<<endl;


} }


int main(int argc,char* argv[]){ char feld[y][x]{{0,0,1,0,0,0,0,1,0,0,0,0},                 {0,0,1,0,0,0,1,0,0,0,0,0},                 0,0,1,0,,0,1,0,0,0,0,0,0},                 {0,0,1,0,1,0,0,0,0,0,0,0},                 {0,0,1,1,0,0,0,0,0,0,0,0},                 {0,0,1,0,1,0,0,0,0,0,0,0},                 {0,0,1,0,0,1,0,0,0,0,0,0},                 {0,0,1,0,0,0,1,0,0,0,0,0}};


ausgeben(feld);

return 0;
}

Hier die Fehlermeldungen:

||=== Build file: "no target" in "no project" (compiler: unknown) ===|

|8|error: declaration of 'feld' as multidimensional array must have bounds for all dimensions except the first|

||In function 'void ausgeben(...)':|

|15|error: 'feld' was not declared in this scope|

||In function 'int main(int, char)':|

|32|warning: extended initializer lists only available with -std=c++11 or -std=gnu++11|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

||=== Build failed: 2 error(s), 9 warning(s) (0 minute(s), 1 second(s)) ===|

Und könnte mir jemand noch erklären wie ich die Fehlermeldungen wegbekomme ich verwende Code::Blocks mit dem GNU GCC Compiler ich war schon mal in den entsprechenden Einstellungen allerdings kenne ich mich damit nicht aus und will da nichts verstellen(aber musste ich bereits denn der Compiler verstand Anfangs den neuerern C++ standard nicht obwohl er aktuell ist)

Software, hacken, programmieren, Funktion, Array
Bachelorarbeit - Mit Java Grundkenntnisse eine Android-App entwickeln?

Hallo!

Ich stehe gerade vor meiner Bachelorarbeit und bin gerade dabei mir ein passendes Thema zu überlegen. Ich möchte gerne was im Bereich Softwarentwicklung (java) machen.

Während meines Studium habe ich mich ein wenig mit Java beschäftigt und in der letzten Zeit habe ich mich die Grundkenntnisse in Java nochmal angeeignet. War für mich zwar nicht ganz einfach, da ich in der Vergangenheit nicht so viel mit der objektorientierung zu tun gehabt habe, aber einigermaßen hat das schon geklappt.

Allgemeines Verständnis über Programmieren habe ich (VBA, ein wenig Pascal, JavaScript). Nun habe ich mir ein Thema überlegt und bin gerade am Überlegen ob ich mich mit einer Einarbeitungszeit von ca. 1 - 2 Monaten genügend Kentnisse im Bereich der Entwicklung von Java/Android-Apps aneignen kann, um anschließend in ca. 1 1/2 Monaten die Implementierung abzuschließen. So wahnsinnig komplex währe die Anwendung meiner Meinung nach nicht. Im Grunde geht es um folgendes:

  • speichern/auslesen von Kundendaten über eine Datenbank
  • Bearbeiten von Kundendaten
  • Kunden nach bestimmten Kriterien filtern
  • bestimmte Mails mit der JavaMail API auslesen und nach bestimmten Informationen suchen (habe ich schon mal versucht, hat auch ganz gut geklappt)
  • evtl. noch das einbinden bon Google Maps (Alle Kunden sind in einer Google Maps Karte quasie markiert und wenn ich mich diesem Standort auf x Metern nähere, soll die App dies erkennen und in eine Liste abspeichern)

Letzteres muss man mal sehen, kommt drauf an wie "komplex" die Realisierung ist.Zusätzlich sollte das vom Layout einigermaßen ansprechend ausschauen.

Ich weiß, dass ich mich wohl neben Java noch ein wenig in XML einarbeiten muss und die Architektur eine andere ist, aber Java haben beide Architekturen (Pc/Smartphone) gemeinsam.

Wie sehr ist die Umstellung von der Entwicklung auf herkömmliche Weise und die Enwicklung auf Android Geräte ? Jemand Erfahrungen ? Wie hat die Einarbeitung (z.B. der Zeitaufwand) mit der Enwicklung von Apps geklappt ? Was glaubt ihr wie viel Zeit man in etwas benötigt um Anwendung (wie oben beschrieben) und einem Grundlagenwissen in Java (jedoch ffortgeschrittene Programmierkentnisse im allgemeinen) zu realisieren ? Ich bedanke mich =)

Computer, Technik, programmieren, Java, Android, Bachelorarbeit, Technologie, XML, GUI, Programmierung Java, App entwickeln
C# Datagridview/Datenbank bearbeiten mit Button?

Hallo, ich versuche gerade Einträge in einem Datagridview zu bearbeiten. Ich habe also das Datagridview, einen Bearbeiten Button und eine zweite Form die sich beim klicken auf den Bearbeiten Button öffnet. Ich wähle also einen Eintrag im Grid aus z.B. mit ID: 1 Vorname: Max Nachname: Mustermann. Dann steht im sich öffnenden Fenster nach dem klick auf bearbeiten die ID: 1 Vorname: Max Nachname: Mustermann alles in einer eigenen Textbox, genauso wie ich es haben will. Jetzt ist aber das Problem, wenn ich den Namen z.B. auf Musterfrau ändern will und auf Ok klicke ändert sich der Name im Grid nicht zu Musterfrau sondern bleibt unverändert bei Mustermann.

Bearbeiten Button in der ersten Form:

private void buttonBearbeiten_Click(object sender, EventArgs e)
		{
				var selectedRow = PersonDataGridView.SelectedRows[0];
				var selectedPerson = (Person)selectedRow.DataBoundItem;
            var dlg = new PersonDialog();

            dlg.BindPerson(selectedPerson);
            dlg.ShowDialog();

            if (dlg.DialogResult == DialogResult.OK)
            {
                var person = dlg._selectedPerson;
            
                //_db.EditPerson(person);
                _db.SaveChanges();
                
                füllen();
            }
        }
    }

DbContext:

public DbSet<Person> Personen { get; set; }
public void EditPerson(Person person)
		{
			//Wie bearbeite ich eine Person
            //Beim hinzufügen ist es ja z.B. Personen.Add()
		}

BindPerson-Methode und Ok Button in der zweiten Form(zweite Form wird nach klick auf Bearbeiten Button geöffnet):

public Person _selectedPerson;
    public void BindPerson(Person selectedPerson)
    {
        textBoxID.Text = selectedPerson.Id.ToString();
        textBoxVorname.Text = selectedPerson.Vorname;
        textBoxName.Text = selectedPerson.Name;
        textBoxStrasse.Text = selectedPerson.Straße;
        textBoxHausnummer.Text = selectedPerson.Hausnummer.ToString();
        textBoxWohnort.Text = selectedPerson.Wohnort;
        textBoxPLZ.Text = selectedPerson.PLZ.ToString();

        _selectedPerson = selectedPerson;
    }

    private void buttonOK_Click(object sender, EventArgs e)
    {
        var id = Convert.ToInt32(textBoxID.Text);
        var vorname = textBoxVorname.Text;
        var name = textBoxName.Text;
        var straße = textBoxStrasse.Text;
        int hausnummer = Convert.ToInt32(textBoxHausnummer.Text);
        var wohnort = textBoxWohnort.Text;
        int plz = Convert.ToInt32(textBoxPLZ.Text);

        _selectedPerson.Id = id;
        _selectedPerson.Vorname = vorname;
        _selectedPerson.Name = name;
        _selectedPerson.Straße = straße;
        _selectedPerson.Hausnummer = hausnummer;
        _selectedPerson.Wohnort = wohnort;
        _selectedPerson.PLZ = plz;

        Close();
    }

Was muss ich in meine EditPerson-Methode schreiben damit die Änderungen im Grid sichtbar sind?

Danke euch.

SQL, programmieren, C Sharp, Datenbank, Visual Studio
C# Abbrechen-Button?

Hallo, ich habe ein Problem mit meiner Anwendung. Ich habe eine Form die heißt z.B. Form1 und eine Form2. Beim klick auf den Hinzufügen-Button in Form1 öffnet sich Form2 (dort sollen dann Daten in Textboxen eingegeben). Wenn ich dann auf den Speichern-Button klicke werden diese eingegebenen Daten in eine Datenbank gespeichert und in einem Datagridview in Form1 angezeigt. Das Problem hierbei ist, der Abbrechen-Button in Form2 funktioniert nicht (beim klick auf den Abbrechen-Button soll man wieder zurück zu Form1 kommen). Ich habe eine Datenbank Kontext Klasse "PersonDbContext" in der zwei Methoden sind, einmal zum hinzufügen und einmal entfernen einer Person aus dem grid sowie Datenbank.

DbContext:

public class PersonDbContext : DbContext
	{
		public DbSet<Persons> Person { get; set; }
    public void AddPerson(Persons person)
    {
        Person.Add(person);
        SaveChanges();
        MessageBox.Show(@"Person wurde erfolgreich hinzugefügt.");
    }

    public void RemovePerson(Persons person)
    {
        Person.Attach(person);
        Entry(person).State = EntityState.Deleted;
        SaveChanges();

        MessageBox.Show(@"Person wurde erfolgreich gelöscht.");
    }
}

Form1:

private void buttonHinzufügen_Click(object sender, EventArgs e)
		{
			var dlg = new PersonDialog();
			dlg.ShowDialog();
			var person = dlg.Persons;
        _db.AddPerson(person);
        _db.SaveChanges();
    }

PersonDialog ist die 2. Form die sich dann öffnet (Form2).

Wenn ich auf meinen Abbrechen-Button in meiner 2. Form klicke bekomme ich immer den Fehler das der Wert nicht null sein darf.

Also im DbContext in der AddPerson-Methode heißt es dann der Wert darf nicht null sein (bei Person.Add(person);

public void AddPerson(Persons person)
		{
            //Wert darf nicht null sein.
    		Person.Add(person);
        SaveChanges();
        MessageBox.Show(@"Person wurde erfolgreich hinzugefügt.");
    }

Wenn ich aber eben keine Person hinzufügen will (keine Daten in Form2 eingeben will) ist es null. Ich muss sogesehen eine neue Person hinzufügen und die dann per Löschen-Button in Form1 wieder entfernen weil ich sonst ja die Exception kriege. Also wie bringe ich den Abbrechen-Button in Form2 zum laufen (damit es egal ist ob der Wert null ist bzw halt nichts eingegeben wurde)?

Danke euch. :)

Computer, SQL, programmieren, C Sharp, Datenbank, Visual Studio
Wie funktioniert eventbasierte Programmierung?

Laut dem, was ich bisher gehört habe, funktionieren Events rein reaktiv, will meinen, dass erst mit dem Eintritt des Events etwas ausgeführt wird und das Programm ansonsten "schläft".

Wie wird das umgesetzt?

Angenommen, ich möchte, dass der Bildschirm rot eingefärbt wird, wenn man die Leertaste drückt, würde man ja üblicher Weise in einer Schleife pollen, ob die Taste gerade gedrückt ist.

Events sollen jetzt ja aber diese Abfrage unnötig machen. Mich würde aber interessieren wie das gemacht wird.

Meine Idee ist, dass ein Event nichts weiter ist, als ein function-call aller Funktionen (oder Aufruf aller Prozesse / Threads) (eventhandler?), deren Adresse beispielsweise in Form eines function-pointers in irgend einer Form von container, zB. einem Vektor, hinterlegt sind, ich nehme mal an, beim Betriebssystem oder zumindest der nächsthöheren Instanz und die wieder, sodass das dann früher oder später beim Betriebssystem hinterlegt ist.
Tritt nun also beim Betriebssystem, der Fall ein, dass die Taste gedrückt wird, führt das Betriebssystem alle hinterlegten Funktionen aus, also "aktiviert" quasi die eventhandler.
Somit würde nicht gepollt werden, das was ausgeführt wird (in dem Fall die Funktion) passiert im Prinzip rein reaktiv auf das Event, welches vom Betriebssystem ausgelöst wird.

Vielleicht ist das ja der tatsächliche Weg, aber wenn nicht, wie funktioniert es wirklich?

Und wenn es tatsächlich so funktioniert, wie macht es dann das Betriebssystem? Bei meiner Methode müsste ja früher oder später gepollt werden. Zwar hätte man den Vorteil, dass für alle Programme die in irgend einer Form auf den Tastendruck reagieren sollen, nur einmal zentral gepollt werden muss und nicht für jedes einzeln, aber es würde ja dennoch dem Eventprinzip widersprechen oder nicht? Schließlich wäre es nicht REIN reaktiv.
Ich glaube, dass es für ein rein reaktives System nötig wäre, bis auf die hardware-ebene zurückzugehen, wo halt irgend ein decoder auf das binäre Signal der entsprechenden Taste anspringt und eine 1 liefert, deren Leitung mit dem Prozessorbefehl oder was auch immer verbunden ist (bzw halt digital "freigeschalten" ist), der dann das Event auslöst (was sich dann aber kaum noch von einer Schleife mit der Überprüfung des Signals unterscheidet, da ja auch das dauerhaft einen Teil des Prozessor beanspruchen / belegen würde)?

Also, wie ist es wirklich? :)

Computer, Technik, Event, programmieren, Technologie
C# Caesarverschlüsselung programmieren?

Hallo alle zusammen,

ich habe ein Programm (C#) in der Berufsschule entworfen, um einen bzw. mehrere Buchstaben /Wörter in einen verschlüsselten Text, per Caesarverschiebung um zwei Stellen, umzuwandeln.

Allerdings zeigt er mir immer die zwei Fehler an, dass int nicht in char konvertiert werden könne. Wo allerdings der Fehler liegt bin ich gerade ratlos. Er verweist halt immer auf den Originalbuchstaben (unverschlüsselter Text aus der Eingabe, der verschlüsselt werden soll) und den verschlüsselten Buchstaben.

Hat jemand eine Ahnung wie man die beiden Fehler löst? Wäre super :)

VG Sascha

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
   class Program
   {
       static void Main(string[] args)
       {
           Console.WriteLine("Bitte geben sie den zu verschlüsselnden Buchstaben ein:");
           char originalbuchstabe = Convert.ToChar(Console.ReadLine());
           Console.WriteLine("Der verschlüsselte Buchstabe lautet: {0}", Verschlüsseln('a', 3, 25)); //{0} <---Platzhalter
           Console.ReadKey();
           Console.WriteLine("Bitte geben sie den zu entschlüsselnden Buchstaben ein:");
           int Verschlüsselter_Buchstabe = Convert.ToInt32(Console.ReadLine());
           Console.WriteLine("Der entschlüsselte Buchstabe lautet: {0}", Entschlüsseln('a', 3));
           Console.ReadKey();
       }
       static char Verschlüsseln(char originalbuchstabe, int offset, int n = 25)
       {
           char Verschlüsselter_Buchstabe = (originalbuchstabe + offset);
           return Verschlüsselter_Buchstabe;
       }
       static char Entschlüsseln(char Verschlüsselter_Buchstabe, int offset = 2, int n = 25)
       {
           char Entschlüsselter_Buchstabe = (Verschlüsselter_Buchstabe - offset);
           return Entschlüsselter_Buchstabe;
       }
   }
}
Computer, programmieren

Meistgelesene Beiträge zum Thema Programmieren