Java: Unterschied zwischen den Versionen

Aus Flinkwiki
Wechseln zu: Navigation, Suche
(for each)
(for each)
Zeile 313: Zeile 313:
 
         }
 
         }
 
     }
 
     }
}
+
}</nowiki>
 +
Beispiel für ein Array mit Datentyp <code>String</code>:
 +
<nowiki>
 +
 
 +
        String meinArray2[] = {"cat", "dog", "bird", "lizard"};
 +
        for (String i : meinArray2) {
 +
            System.out.println(i);
 +
        }
 
</nowiki>
 
</nowiki>
  

Version vom 27. August 2019, 11:57 Uhr

Seitenübersicht
Zur Seite "Eclipse"
Zur Seite "Netbeans"
Zur Seite "Java: Beispiele"
Zur Seite "Kotlin"


Übersetzung von Quellcode in Bytecode

Wenn keine IDE wie Eclipse mit einem Menüpunkt Run zur Verfügung steht, kann man die javaDatei auch auf der Kommandozeile (bash, cmd etc.) übersetzen:

javac Dateiname.java

Es entsteht eine Datei Dateiname.class, die mit dem Befehl

java Dateiname 

(ohne die Endung class) aufgerufen werden kann.


Importieren von Paketen und Klassen

Import einer einzelnen Klasse:

import java.util.Scanner;

Import aller Klassen eines Pakets:

import java.util.*; 

Pakete:

  • java.util // z. B. Klasse Scanner
  • javax.swing // z. B. Klasse JOptionPane // Methode showInputDialog()

Eingabe über die Konsole (Tastatureingabe)

JOptionPane

import javax.swing.*;

public class SwingPane {
    public static void main(String[] args) {
        String name = JOptionPane.showInputDialog("Wie ist Ihr Name?");
        System.out.println("Sie heißen also " + name + ".");
    }
}

Es öffnet sich eine Dialogbox für die Eingabe. Bei Eingabe einer Zahl muss diese gegebenenfalls mit Integer.parseInt() oder Float.parseFloat() umgewandelt werden.

Die Ausgabe eines Ergebnisses kann ebenfalls über ein Fenster erfolgen: JOptionPane.showMessageDialog(null, "Das Ergebnis lautet: " + ergebnis).


Klasse Scanner

public class Skanner {
    public static void main(String[] args) {
        Scanner eingabe = new Scanner(System.in);
        System.out.println("Geben Sie bitte Ihren Namen ein:");
        String name = eingabe.next();
        System.out.println("Sie heißen also " + name + ".");
    }   
}

Methoden für Scanner:

  • next() >> Eingabe eines Wortes
  • nextLine() >> Eingabe einer Textzeile
  • nextInt() >> Eingabe einer Ganzzahl
  • nextFloat() >> Eingabe einer Fließpunktzahl
  • nextDouble() >> Eingabe einer Fließpunktzahl

Achtung: nextFloat() und nextDouble() erkennen die Lokalisierung des Rechners. Auf einem "deutschen" Rechner ist die Zahl mit Komma und nicht mit Punkt einzugeben.


Um Werte vom Typ char zu erhalten, verwendet man die Methode findWithinHorizon():

import java.util.*;

public class Skanner {
    public static void main(String[] args) {
        Scanner eingabe = new Scanner(System.in);
        System.out.println("Geben Sie bitte Zeichen 1 ein:");
        char zeichen1 = eingabe.findWithinHorizon(".", 0).charAt(0);
        System.out.println("Geben Sie bitte Zeichen 2 ein:");
        char zeichen2 = eingabe.findWithinHorizon(".", 0).charAt(0);
        System.out.println("Zeichen 1 + Zeichen 2 ergeben zusammen " + zeichen1 + zeichen2 + ".");
    }   
}


Klasse BufferedReader und Methode readLine()

  • InputStreamReader erlaubt die Umsetzung eines Bytestreams in einen Zeichenstream. Bytes werden gelesen und in Zeichen dekodiert.
  • BufferedReader liefert einen gepufferten Eingabe-Stream für Unicode-Zeichen.[1]
  • Die statische Methode readLine() stellt einen formatierten Prompt zur Verfügung und liest dann eine Textzeile von der Konsole.

Beispiel:

import java.io.*;

public class MeineEingabe {
    
    public static void main(String[] args) throws IOException {
        String s;
        
        BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
        
        System.out.println("Bitte um Tastatureingabe: ");
        s = eingabe.readLine();
        System.out.println("Ausgabe: " + s);
        
    }
}

Man kann sich auf dieser Grundlage fertige Methoden für die Konsoleneingabe "basteln":

    public static String readString() {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            return br.readLine();
        } catch (IOException ex) {
            return "";
        }
    }
    
    public static int readInt() {
        try {
            return Integer.parseInt(readString());
        } catch (NumberFormatException ex) {
            return 0;
        }
    }
    
    public static double readDouble() {
        try {
            return Double.parseDouble(readString());
        } catch (NumberFormatException ex) {
            return 0.0;
        }
    }
}

Beispiele für die Verwendung dieser Methoden:

        String eingabe = readString();
        System.out.println("Die Eingabe lautet: " + eingabe);
        
        int intEingabe = readInt();
        System.out.println("Die intEingabe lautet: " + intEingabe);
        
        double doubleEingabe = readDouble();
        System.out.println("Die doubleEingabe lautet: " + doubleEingabe);

(Dank an Hn. K. / javafish.de) </nowiki>


Verzweigungen


Verzweigung (if)

Selection mit (if) / (else)

if (<boolescher Ausdruck>) {
    Anweisung(en) 1
} 
else if {
    Anweisung(en) 2
}
else {
    Anweisung(en) 3
}

Eine if-Verzweigung führt stets die nachfolgende Anweisung aus, wenn der <boolesche Ausdruck> wahr ist. Sollen mehrere Anweisungen ausgeführt werden so sind diese in einen Block zusammenzufassen (mit Hilfe der geschweiften Klammern). Die if else / else Bedingung ist optional - auch hier gilt dass mehrere Anweisungen in einen Block zusammenzufassen sind.


Verschachtelte Selektion

Als Anweisung nach einer Selektion kann eine weitere Selektion stehen.

public class Verschachtelung {
    public static void main(String[] args) {
        int a = 10;
        int b = 100;
        int c = 1000;
        if (a < 50) {
            if (b < 500) {
                if (c < 5000) {
                    System.out.println("Alle Bedingungen treffen zu.");
                } else {System.out.println("Die dritte Bedingung trifft nicht zu.");}
            } else {System.out.println("Die zweite Bedingung trifft nicht zu.");}
        } else {System.out.println("Die erste Bedingung trifft nicht zu.");}
   }
}


Mehrfachselektion mit switch

Mit switch kann man eine Variable auf verschiedene Werte abfragen.

public class SwitchErgebnis {
    public static void main(String[] args) {
        int ergebnis = 13;
        switch (ergebnis) {
            case 3:
                System.out.println("Das ist zu wenig.");
                break;
            case 13:
                System.out.println("Genau richtig.");
                break;
            case 14:
                System.out.println("Das geht übers Ziel hinaus.");
                break;
            default:
                System.out.println("Unbekannte Zahl");
        }
    }
}

Wenn man die break-Anweisung weglässt, werden die folgenden Fälle bis zur nächsten break--Anweisung mit abgearbeitet.


Schleifen

do while

Es handelt sich um eine fußgesteuerte Schleife, da die Überprüfung der Bedingung am Ende der Schleife erfolgt. Die Anweisung im Schleifenkörper wird mindestens einmal ausgeführt.

public class DoWhile {
    public static void main(String[] args) {
        int a = 10;
        do {
            System.out.println(a);
            a = a + 10;
        }
        while (a <= 100);
    }
}


while

Es handelt sich um eine fußgesteuerte Schleife, da die Überprüfung der Bedingung am Anfang der Schleife erfolgt. Wenn die Bedingung "false" ist, werden die Anweisungen im Schleifenrumpf nicht durchlaufen.

public class WhileSchleife {
    public static void main(String[] args) {
        int i = 10;
        while (i > 0) {
            System.out.println(i);
            i--;
        }
    }    
}


for

Die for-Schleife ist zählergesteuert. Der Zähler läuft mit einer definierten Schrittweite von einem bestimmten Anfangswert zu einem bestimmten Endwert.

public class ForSchleife {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++){
            System.out.println(i);
        }
    }    
}

Sprung innerhalb der Schleife mit continue

Folgende Schleife gibt die Zahlen von 1 - 10 ohne die 7 aus:

public class ForSchleife {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++){
            if (i == 7) continue;
            System.out.println(i);
        }
    }    
}


Abbruch der Schleife mit break

Folgende Schleife gibt nur die die Zahlen von 1 - 6 aus:

public class ForSchleife {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++){
            if (i == 7) break;
            System.out.println(i);
        }
    }    
}


for each

Mit dieser Schleife wird ein Array durchlaufen:

public class JavaForEach {
    public static void main(String[] args) {
        int meinArray[] = {3, 5, 7, 9};
        for (int i : meinArray) {
            System.out.println(i);
        }
    }
}

Beispiel für ein Array mit Datentyp String:

   
        String meinArray2[] = {"cat", "dog", "bird", "lizard"};
        for (String i : meinArray2) {
            System.out.println(i);
        }


Arbeitswerkzeuge

Eclipse


IntelliJ IDEA

Download für Windows/Mac von

Installation in Ubuntu 18.04[2]:

  1. sudo -H software-properties-gtk[3][4]
  2. Im Fenster "Anwendungen & Aktualisierungen" > "Andere Programme" > "Hinzufügen"
  3. ppa:mmk2410/intellij-idea eingeben
  4. Im Terminal apt-get install intellij-idea-community ausführen.

Maven[5]-Projekt starten:

  1. Create New Project
  2. Maven > Next
  3. GroupId und ArtifactId eintragen (z. B. jeweils "demo") > Next
  4. Projektnamen eintragen, es entsteht dann ein gleichnamiges Verzeichnis

Klasse anlegen:

  1. Im linken Fenster unter Project > [Projektname] > src > main
  2. mit der rechten Maustaste auf java klicken
  3. New > Java Class > [dateiname.java] eintragen, OK

Shortcuts:

  • psmvm = public static void main(String[] args) {}
  • sout = System.out.println();


Netbeans

Zur Seite Netbeans


JShell

Am Eingabeprompt der JShell kann man unkompliziert Codefragmente testen.

Aufruf im Terminal (Linux): jshell

Aufruf unter Windows (cmd): jshell. Die Datei jshell.exe liegt im bin-Verzeichnis der jdk-Installation.


Eingaben nachträglich editieren:

/edit

Importierte Klassen anzeigen:

/imports

Quellen

Links


Youtube


Bücher


|