Werden Software Entwickler bald durch KIs ersetzt?

Ich mache eine Fachinformatiker Ausbildung und würde nach der Ausbildung in einer öffentlichen Bank arbeiten. Ich habe aber durch Chatgpt die Sorge, dass wir bald durch KIs ersetzt werden.

Ich denke zwar, dass Programmierer immer gebraucht werden, aber als ich Chatgpt verwendet habe, ist mir aufgefallen, wie gut das programmieren kann. Ich habe innerhalb von 3 Minuten ein Programm mit einer Eingabe und Button "geschrieben", was ein Browserfenster öffnet mit der eingegeben Stadt auf Google Maps. Das war viel zu gut! Natürlich ist das nichts Komplexes, aber das zeigt auf jeden Fall, was bald möglich sein wird.

Bei uns in der Firma benutzen wir eigene Frameworks und Libraries, weshalb Chatgpt keine so große Hilfe ist bisher. Aber was wenn diese KI's so gut werden, sodass jeder diese Bankprogramme kreiieren kann. Bzw. was wenn die guten Programmierer so produktiv werden, dass einfach sehr sehr viel weniger Programmierer benötigt werden?

Diese KIs können so viel und werden immer mehr können und das macht mir sehr Angst! Ich überlege auch schon einfach ein Handwerk zu machen. Chatgpt ist natürlich noch keine so große Gefahr. Aber was ist mit besseren Versionen von Chatgpt? Beim jetzigen Fortschritt gebe ich dieser Technologie keine 5 Jahre und ich werde arbeitslos sein.

Mir macht es keine Sorgen, dass Programmierer ersetzt werden, sondern dass einfach der Bedarf für Software Entwickler in 5-10 Jahren sehr stark runtergeht.

Seid einfach ehrlich! Sollte ich die Ausbildung abbrechen und ein Handwerk anfangen oder eine Beamten Ausbildung machen?

Arbeit, Lernen, Studium, Schule, Mathematik, programmieren, Handwerk, Ausbildung, Java, Entwickler, Informatik, künstliche Intelligenz, Python, Softwareentwicklung
Zahl mit Arduino an MySQL Datenbank senden?

Moin,

Vielleicht kann mir jemand helfen. Ich will, dass mein Arduino den Wert einer stinknormalen Variable an eine MySQL-Datenbank schickt. Ich bin mehr oder weniger am Verzweifeln, weil mir niemand helfen kann... Es kann doch nicht so schwer sein, ne blöde Zahl irgendwie in Form einer Variable an die Datenbank zu senden...

Ich benutze einen normales Arduino Uno, und ein W5100 ethernet shield

Mein bisheriger Ansatz war so: (Logindaten der Datenbank entfernt)

#include <Ethernet.h>

#include <MySQL_Connection.h>

#include <MySQL_Cursor.h>

byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress server_addr('localhost'); 

char user[] = "root";       

char password[] = "secret";    

// Sample query

char INSERT_SQL[] = "INSERT INTO Test (Sensor) VALUES ('3')";

EthernetClient client;

MySQL_Connection conn((Client *)&client);

void setup() {

 Serial.begin(115200);

 while (!Serial);

 Ethernet.begin(mac_addr);

 Serial.println("Connecting...");

 if (conn.connect(server_addr, 3306, user, password)) {

  delay(1000);

 }

 else

  Serial.println("Connection failed.");

}

void loop() {

 delay(2000);

 Serial.println("Recording data.");

 

 MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);

 cur_mem->execute(INSERT_SQL);

 delete cur_mem;

}

SQL, HTML, Webseite, programmieren, Java, Cplusplus, Arduino, Datenbank, MySQL, PHP, Programmiersprache, Python, Softwareentwicklung, Webentwicklung, phpMyAdmin, Raspberry Pi
Flutter Data from API?

Hey, will Daten von meiner erstellten API ausgeben in meiner App.

Code:

fetchData() async {
    final response = await http.get(Uri.parse('http://localhost/list.json'));
    return json.decode(response.body);
  }

FutureBuilder(
            future: fetchData(),
            builder: (BuildContext context, AsyncSnapshot snapshot){
              if(snapshot.hasError){
                return Center(
                  child:Text("Error"),
                );
              }
              if(snapshot.hasData){
                return ListView.builder(
                  itemCount: snapshot.data.length, 
                    itemBuilder: (BuildContext context, int index){
                  return Row(
                    children: [
                      Expanded(
                        child: Container(
                        child: Column(
                          children: [
                            Text(snapshot.data[index]['id']),
                            SizedBox(height: 10,),
                            Text(snapshot.data[index]['name']),
                            
                          ],
                        ),
                        ),
                      ),
                    ],
                  );
                });
              }
              return Center(child: CircularProgressIndicator(),);
            },
          ),

Jedoch bekomm ich als Ausgabe "Error". Woran kann das liegen? Die API kann ich mit Postmann abfragen.

App, Technik, programmieren, iOS, Android, Dart, Entwicklung, MySQL, Programmiersprache, Rest, Softwareentwicklung, API, localhost, app entwicklung, Flutter
Java-Code?

Wie sieht die Methode Punktspiegelung und horizonalspieglung aus?

Implementieren Sie die Operation punktSpiegeln, die alle Punkte am Mittelpunkt des Bildes spiegelt.

Implementieren Sie in SWBild die Operation horizontalSpiegeln, die das Bild an der horizontalen Achse spiegelt.Für die Lösung zu dieser Operation ist kein zusätzliches Array-Objekt zugelassen, sie muss also „in place“ erfolgen

/**
 * SWBild ist eine Klasse, die Graustufenbilder repraesentiert und
 * manipuliert. Die Implementierung erfolgt durch ein einfaches
 * Bildformat: Die Bildpunkte werden in einem zweidimensionalen
 * Array von 'short'-Werten gehalten. Jeder Feldeintrag kann einen
 * Wert zwischen 0 und 255 annehmen. Andere Werte sind unzulaessig.
 * Der Wertebereich [0..255] repraesentiert den Graustufenbereich:
 * 0 fuer Schwarz, 255 fuer Weiss und dazwischenliegende Werte fuer
 * die Grauabstufungen.
 * 
 * Beispielmethode 'dunkler': Ein geladenes Bild kann um
 * ein gegebenes 'delta' abgedunkelt werden.
 * 
 */
class SWBild
{
    private int anzahlPiksel=0;


    // die Bilddaten dieses Bildes
    private short[][] _bilddaten;


    // die Breite dieses Bildes
    private int _breite;


    // die Hoehe dieses Bildes
    private int _hoehe;


    // Leinwand zur Anzeige
    private Leinwand _leinwand;


    /**
     * Initialisiert ein Bild mit einer Bilddatei. Der Benutzer kann interaktiv mit
     * Hilfe eines Dateidialogs die zu ladende Datei auswaehlen.
     */
    public SWBild()
    {
        _bilddaten = BildEinleser.liesBilddaten();
        if (_bilddaten != null)
        {
            aktualisiereBildgroesse(_bilddaten);
            erzeugeLeinwand();
        }
    }


    /**
     * Initialisiert ein Bild mit einer Bilddatei. Der Dateiname kann als absoluter
     * oder relativer Pfad uebergeben werden.
     * 
     * @param bilddateiName
     *            der Name der Bilddatei
     */
    public SWBild(String bilddateiName)
    {
        _bilddaten = BildEinleser.liesBilddaten(bilddateiName);
        aktualisiereBildgroesse(_bilddaten);
        erzeugeLeinwand();
    }

/**
     * Erzeuge bei diesem Bild einen Spot mit Radius r, Mittelpunkt x0,y0 und
     * Beleuchtungsintensitaet i. Ausserhalb von r nimmt die Ausleuchtung linear ab.
     * Wie im wirklichen Leben...
     * 
     * @param xo
     *            x-Koordinate des Mittelpunktes
     * @param yo
     *            y-Koordinate des Mittelpunktes
     * @param r
     *            Radius
     * @param i
     *            Beleuchtungsintesitaet
     */
    public void spot(int x0, int y0, int r, short i)
}


Mathematik, programmieren, Java, Informatik, Python, Softwareentwicklung, Wirtschaftsinformatik, technische informatik, angewandte Informatik
Java-Code, Array?

Kann jemand mir die Methoden, heller, spot, weichzeichnen, horizontalspieglung, punktSpieglung erklären?

* SWBild ist eine Klasse, die Graustufenbilder repraesentiert und

 * manipuliert. Die Implementierung erfolgt durch ein einfaches
 * Bildformat: Die Bildpunkte werden in einem zweidimensionalen
 * Array von 'short'-Werten gehalten. Jeder Feldeintrag kann einen
 * Wert zwischen 0 und 255 annehmen. Andere Werte sind unzulaessig.
 * Der Wertebereich [0..255] repraesentiert den Graustufenbereich:
 * 0 fuer Schwarz, 255 fuer Weiss und dazwischenliegende Werte fuer die Grauabstufungen.
 */

class SWBild
{
     

    /**
     * Dieses Bild weichzeichnen.
     */
    public void weichzeichnen()
    {
        for (int y = 0; y < _hoehe; y++)
        {
            for (int x = 0; x < _breite; x++)
            {
                int _nebenBildpunkte = 0; 
                int anzahlPiksel=0;          
                _nebenBildpunkte += weichzeichnen(y+1, x);
                _nebenBildpunkte += weichzeichnen(y+1, x+1);
                _nebenBildpunkte += weichzeichnen(y+1, x-1);
                _nebenBildpunkte += weichzeichnen(y, x+1);
                _nebenBildpunkte += weichzeichnen(y, x-1);
                _nebenBildpunkte += weichzeichnen(y-1, x+1);
                _nebenBildpunkte += weichzeichnen(y-1, x);
                _nebenBildpunkte += weichzeichnen(y-1, x-1);
                _nebenBildpunkte = _nebenBildpunkte/anzahlPiksel;
                _bilddaten[y][x] = (short) _nebenBildpunkte;
            }
        }
        zeichneBild();
    }

    public int weichzeichnen(int y, int x) {
        if (x >= 0 && x < _breite && y >= 0 && y < _hoehe) {
            anzahlPiksel++;
            return _bilddaten[y][x];
        }
        else
        {
            return 0;
        }
    }

    /**
     * Erzeuge bei diesem Bild einen Spot mit Radius r, Mittelpunkt x0,y0 und Beleuchtungsintensitaet i. Ausserhalb von r nimmt die Ausleuchtung linear ab.
     * Wie im wirklichen Leben...
     * @param xo
     *            x-Koordinate des Mittelpunktes
     * @param yo
     *            y-Koordinate des Mittelpunktes
     * @param r
     *            Radius
     * @param i
     *            Beleuchtungsintesitaet
     */
    public void spot(int x0, int y0, int r, short i)
    {
        short i0 = 0;
        for (int k = _breite/2; k >= r; k--) {
            for (int y=0; y<_hoehe; y++){
                for (int x=0; x<_breite;x++){
                    if(((x-x0)*(x-x0))+((y-y0)*(y-y0))<=k*k){ 
                        if (_bilddaten[y][x] + i0 > 255) {
                            _bilddaten[y][x] = 255;
                        } else if (_bilddaten[y][x] + i0 < 0) {
                            _bilddaten[y][x] = 0;
                        } else {
                            _bilddaten[y][x] = (short) (_bilddaten[y][x] + i0);
                         
                        }
                    }
                    if (i > i0){
                        i0++;
                    }
                }
            }
        }
        zeichneBild();
    }  
Computer, programmieren, Java, Informatik, Softwareentwicklung, Wirtschaftsinformatik
Könnt ihr mir bei dieser Java-Aufgabe helfen?
Einige Methoden werden in allen Implementierungen gleich sein. Erstellen Sie eine abstrakte Klasse BasisRennbahn, die diese Methoden enthält und leiten Sie dann von dieser Klasse ab. Welche Methoden können Sie ohne Probleme in die Basisklasse verschieben? Warum gibt es bei manchen Methoden Probleme?
public class Rennauto {
    private final String name;
    private final String typ;
    private final int max;
    private int strecke;    
 
     * @param name Name der Fahrerin oder des Fahrers
     * @param typ Fahrzeugmarke und Typ
     * @param max maximale Geschwindigkeit
  
    public Rennauto(String name, String typ, int max) {
        this.name = name;
        this.typ = typ;
        this.max = max;
    }
    
     * Fährt mit zufälliger Geschwindigkeit eine Strecke.
    
    public void fahre() {
        strecke += Math.random() * max;
    }    

     * Liefert die aktuelle Position des Rennautos.
    
    public int getStrecke() {
        return strecke;
    }


    @Override
    public String toString() {
        return name + " in " + typ + " (" + strecke + ")";
    }
  public interface Rennbahn {

     * Setzt die Laenge der Rennbahn. Typische Werte werden zwischen 100 und 1000 liegen.
   
  void setzeLaenge(int laenge);


     * Setzt ein Rennauto auf eine Spur, falls möglich
     * @param auto das Auto, das auf die Rennbahn gesetzt wird.  Dieses darf nicht null sein!
     * @return true, falls das Auto auf die Bahn gesetzt werden konnte. Falsch, wenn das Rennauto bereits auf der Fahrbahn ist oder keine Spur (je nach
     *Implementierung unterschiedlich viele) mehr frei ist.

    boolean setzeAufSpur(Rennauto auto);


     * Simuliert einen Zeitabschnitt, i.A. wird hier einfach nur
     * {@link Rennauto#fahre()} für alle am Rennen beteiligten Autos aufgerufen.
    
    void simuliereZeitabschnitt();


     * Liefert den Sieger. Falls mehrere Autos im Ziel sind, gewinnt das Auto, das am weitesten gefahren ist.
     * Wenn Autos exakt gleich weit gefahren sind, gewinnt eines von beiden (welches ist nicht genauer spezifiziert).
     * @return Sieger oder null, falls es keinen Sieger gibt.
  
    Rennauto liefereSieger();


         * Führt das Rennen mittels {@link #simuliereZeitabschnitt()} und
     * {@link #liefereSieger()} durch. Die Methode gibt nichts zurück, der Sieger kann über {@link #liefereSieger()} ermittelt werden.
     * @throws IllegalStateException, falls die Länge nicht gesetzt wurde oder keine
     * Autos auf der Rennbahn stehen.
   
 void rennenDurchfuehren();


     * Entfernt ein Rennauto von der Rennbahn und gibt die Spur wieder frei. 
     * @param auto das zu entfernende Rennauto
    
    void entferne(Rennauto auto);
    
  
     * Prüft, ob wenigstens ein Auto auf der Rennbahn steht.
     * @return false, falls wenigstens ein Auto auf der Rennbahn steht, sonst true
    
    boolean istLeer();
programmieren, Java, Informatik, Programmiersprache, Softwareentwicklung, Wirtschaftsinformatik, Wirtschaftsmathematik, Wirtschaftswissenschaft, technische informatik, angewandte Informatik
Java-Code? Array?

Wie wird das Array verwendet? Was befindet sich in dem Array? kann jemand mir den Code und die Methode dunkler erklären?

* SWBild ist eine Klasse, die Graustufenbilder repraesentiert und
 * manipuliert. Die Implementierung erfolgt durch ein einfaches
 * Bildformat: Die Bildpunkte werden in einem zweidimensionalen
 * Array von 'short'-Werten gehalten. Jeder Feldeintrag kann einen
 * Wert zwischen 0 und 255 annehmen. Andere Werte sind unzulaessig.
 * Der Wertebereich [0..255] repraesentiert den Graustufenbereich:
 * 0 fuer Schwarz, 255 fuer Weiss und dazwischenliegende Werte fuer
 * die Grauabstufungen.
 * 
 * Beispielmethode 'dunkler': Ein geladenes Bild kann um
 * ein gegebenes 'delta' abgedunkelt werden.
class SWBild
{


    // die Bilddaten dieses Bildes
    private short[][] _bilddaten;


    // die Breite dieses Bildes
    private int _breite;


    // die Hoehe dieses Bildes
    private int _hoehe;


    // Leinwand zur Anzeige
    private Leinwand _leinwand;


    /**
     * Initialisiert ein Bild mit einer Bilddatei. Der Benutzer kann interaktiv mit
     * Hilfe eines Dateidialogs die zu ladende Datei auswaehlen.
     */
    public SWBild()
    {
        _bilddaten = BildEinleser.liesBilddaten();
        if (_bilddaten != null)
        {
            aktualisiereBildgroesse(_bilddaten);
            erzeugeLeinwand();
        }
    }


    /**
     * Initialisiert ein Bild mit einer Bilddatei. Der Dateiname kann als absoluter
     * oder relativer Pfad uebergeben werden.
     * 
     * @param bilddateiName
     *            der Name der Bilddatei
     */
    public SWBild(String bilddateiName)
    {
        _bilddaten = BildEinleser.liesBilddaten(bilddateiName);
        aktualisiereBildgroesse(_bilddaten);
        erzeugeLeinwand();
    }


    /**
     * Dieses Bild um einen Wert abdunkeln. 
     * 
     * @param delta
     *            Wert der Abdunkelung. Es wird mit dem Betrag von delta gerechnet, 
     *            deshalb darf der Parameter sowohl positiv als auch negativ sein.  
     */
    public void dunkler(int delta)
    {
        if (delta < 0)
        {
            delta = -delta;
        }


        /**
         * Durch alle Bytes des Bildes gehen und jeden Wert dekrementieren
         */
        for (int y = 0; y < _hoehe; y++)
        {
            for (int x = 0; x < _breite; x++)
            {
                if ((_bilddaten[y][x] - delta) > 0) // Wert darf 0 nicht unterschreiten
                {
                    _bilddaten[y][x] = (short) (_bilddaten[y][x] - delta);
                }
                else
                {
                    _bilddaten[y][x] = 0;
                }
            }
        }
        // Neuzeichnen der Bildleinwand, basierend auf den Werten in _bilddaten:
        zeichneBild();
    }




Mathematik, programmieren, Java, Informatik, Softwareentwicklung, Wirtschaftsinformatik
Quizspiel programieren. Welche Schleife? Wie kann ich meinen Fehler debuggen?

Hallo,

und zwar muss ich für einen Java Kurs eine Aufgabe programmieren, komme allerdings nicht weiter, da bei der Richtigen Eingabe der Hauptstadt das Fenster aufpoppt das sagt "Stadt X ist flasch. Stadt Y wäre richtig". Kann mir einer helfen?

Aufgabe

In diesem Aufgabenteil realisierst du ein Quiz mit User-Interface. Die Aufgabe kannst du in Eclipse lösen. Die Abgabe erfolgt wie bei den Praxisteilen durch die Abgabe der Java-Datei. Erstelle in Java ein neues Projekt mit dem Namen Hauptstadtquiz. Füge dem Projekt die Klasse Country hinzu und kopiere den folgenden Programmcode in die Klasse:

public class Country {
   public String land;
   public String hauptstadt;
	
   public Country(String land, String hauptstadt) {
      this.land = land;
      this.hauptstadt = hauptstadt;
   }
}

Füge dem Projekt eine weiter Klasse mit dem Namen Main hinzu und kopiere den folgenden Programmcode in die Klasse:

import java.util.ArrayList;
import javax.swing.*;

public class Main {
   public static void main(String[] args) {
      ArrayList<Country> countries = new ArrayList<Country>();
      countries.add(new Country("Schweiz","Bern"));
      countries.add(new Country("Frankreich","Paris"));
      countries.add(new Country("Deutschland","Berlin"));
      countries.add(new Country("Italien","Rom"));
      countries.add(new Country("Österreich","Wien"));
		
      // TODO: GUI und Spiellogik implementieren
     for (int i = 0; i < 5; i++) {
String name = JOptionPane.showInputDialog(null,"Wie lautet die Hauptstadt von " + countries.get(i).land + "?","Hauptstadtquiz",JOptionPane.PLAIN_MESSAGE);	
    
      if (name == null) {
JOptionPane.showMessageDialog(null,"Die Frage wurde übersprungen.","Hauptstadtquiz",JOptionPane.ERROR_MESSAGE); break; 
// funktioniert 
        
} else if (name != null ) {
JOptionPane.showMessageDialog(null, name + " ist falsch. Richtig wäre " + countries.get(i).hauptstadt + ".","Hauptstadtquiz",JOptionPane.WARNING_MESSAGE);
//funktioniert

} else if ((countries.get(i).hauptstadt).equals(name)) {
JOptionPane.showMessageDialog(null, countries.get(i).hauptstadt + " ist richtig.", name, JOptionPane.DEFAULT_OPTION);	
//funktioniert nicht 
              }
           }
        }

Im Prinzip sollen Fenster aufpoppen Die zb Fragen "Was ist die Haupt der Schweiz". In Folgedessen soll ein nächstes Fenster aufpoppen wo man Seine Antwort eingeben kann. Gibt man zB Bern ein soll ein nächstes Fenster aufpoppen mit "Bern ist richtig." Falls die Antwort falsch ist soll ein Fenster mit "Zürich ist falsch. Bern wäre richtig" aufkommen. Weiß jemand warum bei mir bei richtiger Antwort immer noch das Fenster mit "Stadt X ist falsch. Stadt X wäre richtig" aufkommt? Vielen Dank!!!

Schleifen, Softwareentwicklung
Dringend Hilfe: Java Code?

Kann jemand mir diese Java-Code erklären? Ich komme mit dem Code nicht zurecht. Wie kann man noch einfacher schreiben?

Die Aufgabenstellung: Verwenden Sie die Bit-Operationen von Java, um den Zustand einer Zelle des Spielfeldes in jeweils zwei Bits der int-Variablen abzulegen (warum gerade zwei?). 

/**
 * Write a description of class SpielfeldInteger here.
 */

public class SpielfeldInteger implements Spielfeld
{
    private int spielInt;


    /**
     * Initialisiert ein neues, leeres Spielfeld.
     */

    public SpielfeldInteger() {
        spielInt = 0x00000;//2AAAA
        // 0000 0000 0000 0000 0000;
    }


    /**
     * Gibt den Besitzer der angegebenen Position auf dem Spielfeld.
     *
     * @param zeile  vertikale Position (0-2)
     * @param spalte horizontale Position (0-2)
     * @return 0 (unbesetzt), 1 (Spieler 1), 2 (Spieler 2)
     */

    public int gibBesitzer(int zeile, int spalte) {
        int schiebung = (zeile*3*2)+(spalte*2);
        int geschobenerInt = spielInt>>>schiebung;

        //System.out.println(Integer.toBinaryString(geschobenerInt));     
        //System.out.println((geschobenerInt&3));

        if((geschobenerInt&3) == 2) {
            return 1;

        } else if((geschobenerInt&3) == 3) {
            return 2;

        } else {
            return 0;
        }
    }

 

    /**
     * Besetzt die angegebene Position auf dem Spielfeld fuer einen Spieler.
     *
     * @param zeile   vertikale Position (0-2)
     * @param spalte  horizontale Position (0-2)
     * @param spieler 0 (leer), 1 (Spieler 1), 2 (Spieler 2)
     */

    public void besetzePosition(int zeile, int spalte, int spieler) {

        int setzung;

        if(spieler == 1 || spieler == 2) {
            setzung = (spieler+1)<<(zeile*3*2)+(spalte*2);
            spielInt = spielInt|setzung;
        }

        else if(spieler == 0) {
            setzung = ~(3<<(zeile*3*2)+(spalte*2));
            spielInt = spielInt&setzung;
        }    
    }

 

    /**
     * Gibt an, ob das Spielfeld an allen Positionen belegt ist.
     */

    public boolean istVoll() {
        return ((spielInt&0x2AAAA) == 0x2AAAA);
    }
}
Mathematik, programmieren, Java, Informatik, Softwareentwicklung, Wirtschaftsinformatik
java_Code?

Kann einer diese beide Methode erklären? wie läuft switch-case hier?

 /**
     * Gibt den Besitzer der angegebenen Position auf dem Spielfeld.
     *
     * @param zeile  vertikale Position (0-2)
     * @param spalte horizontale Position (0-2)
     * @return 0 (unbesetzt), 1 (Spieler 1), 2 (Spieler 2)
     */
    @Override
    public int gibBesitzer(int zeile, int spalte) {
        int besitzer = 0;
        char zeichen = feld.charAt(gibPosition(zeile, spalte));
        switch (zeichen){
            case '0':
                besitzer = 0;
                break;
            case '1':
                besitzer = 1;
                break;
            case '2':
                besitzer = 2;
                break;
        }
        return besitzer;
    }


    /**
     * Besetzt die angegebene Position auf dem Spielfeld fuer einen Spieler.
     *
     * @param zeile   vertikale Position (0-2)
     * @param spalte  horizontale Position (0-2)
     * @param spieler 0 (leer), 1 (Spieler 1), 2 (Spieler 2)
     */
    @Override
    public void besetzePosition(int zeile, int spalte, int spieler) {
        int position = gibPosition(zeile, spalte);
        feld = feld.substring(0, position) + spieler + feld.substring (position + 1);
    }
Mathematik, programmieren, Java, Informatik, Softwareentwicklung, Wirtschaftsinformatik, Wirtschaftsmathematik
Java-Code erklären?
Ich bitte um eine ausführliche Erklärung!
 * Ein Spielfeld besteht aus drei Zeilen mit je drei Spalten. Man kann an den
 * neun Positionen einen der beiden Spieler als Besitzer eintragen und auslesen.
 */
public class SpielfeldString implements Spielfeld 
{
    private String feld;


    /**
     * Initialisiert ein neues, leeres Spielfeld.
     */
    public SpielfeldString() {
        feld = "000000000";
        //012345678
    }


    /**
     * Die Methode berechnet die bestimmte Position.
     *
     * @param zeile   vertikale Position (0-2)
     * @param spalte  horizontale Position (0-2)
     * @return eine Int-Zahl von 0 bis 8
     */
    private int gibPosition(int zeile, int spalte){
        if (zeile < 0 || zeile > 2 || spalte < 0 || spalte > 2){
            throw new IllegalArgumentException("Spalte oder Zeile ist ausser dem Feld!");
        }
        return zeile * 3 + spalte;
    }


    /**
     * Gibt den Besitzer der angegebenen Position auf dem Spielfeld.
     *
     * @param zeile  vertikale Position (0-2)
     * @param spalte horizontale Position (0-2)
     * @return 0 (unbesetzt), 1 (Spieler 1), 2 (Spieler 2)
     */
    @Override
    public int gibBesitzer(int zeile, int spalte) {
        int besitzer = 0;
        char zeichen = feld.charAt(gibPosition(zeile, spalte));
        switch (zeichen){
            case '0':
                besitzer = 0;
                break;
            case '1':
                besitzer = 1;
                break;
            case '2':
                besitzer = 2;
                break;
        }
        return besitzer;
    }


    /**
     * Besetzt die angegebene Position auf dem Spielfeld fuer einen Spieler.
     *
     * @param zeile   vertikale Position (0-2)
     * @param spalte  horizontale Position (0-2)
     * @param spieler 0 (leer), 1 (Spieler 1), 2 (Spieler 2)
     */
    @Override
    public void besetzePosition(int zeile, int spalte, int spieler) {
        int position = gibPosition(zeile, spalte);
        feld = feld.substring(0, position) + spieler + feld.substring (position + 1);
    }


    /**
     * Gibt an, ob das Spielfeld an allen Positionen belegt ist.
     */
    @Override
    public boolean istVoll() {
        return feld.indexOf("0") == -1; // da wenn es kein 0 mehr in der Zeichenkette gibt,
        // wird -1 zurückgegeben.
    }
}
Mathematik, programmieren, Java, Informatik, Softwareentwicklung, Wirtschaftsinformatik

Meistgelesene Fragen zum Thema Softwareentwicklung