Informatik-Blog.net

import java.util.ArrayList;
import java.util.Collections;

public class Kino {

 ArrayList<Integer> platz = new ArrayList<Integer>();
 static int platzReihe = 50;
 int startplatz, endplatz;

 public Kino(int Kategorie) {
 platz.add(0); //Fixt den Bug, da sonst -1 ausgabe bei BinarySearch
 switch (Kategorie) {
 case 1:    startplatz = 1;  break; // Reihe A
 case 2: startplatz = 100; break; // Reihe B
 case 3:    startplatz = 200; break; // Reihe C
 case 4:    startplatz = 300; break; // Reihe D
 }
 endplatz = startplatz + platzReihe;
 }

 public boolean checkPlatz(int anzahlPlaetze) {
 int tempInt = 0;
 for (int i = startplatz; i < endplatz; i++) {
 if (istFrei(i)) {
 tempInt++;
 } else {
 tempInt = 0;
 }

 if (tempInt == anzahlPlaetze) {
 return true;
 }

 }
 return false;
 }

 /**
 *
 * @param platznummer
 * @return true, wenn der Platz frei ist.
 */

 public boolean istFrei(int platznummer) {
 if (! (platznummer < startplatz) || (platznummer > endplatz) ) { // prüfe ob platznumer in Range
 Collections.sort(platz);
 return (Integer.valueOf(Collections.binarySearch(platz, platznummer)) <= 0) ? true : false;
 }
 return false;
 }

 public boolean addPlatz(int Platznummer, int Kategorie) {
 if (istFrei(Platznummer)) {
 platz.add(Platznummer);
 return true;
 } else {
 return false;
 }
 }

 public boolean deletePlatz(int platznummer) {
 Collections.sort(platz);
 platz.remove( Collections.binarySearch(platz, platznummer) );
 return true;
 }

 public int hoechstePlatznummer(int Kategorie) {
 int z = 0;
 for (int i = endplatz; i > startplatz; i--) {
 if (Collections.binarySearch(platz, i) > 0);
 z = platz.get( Collections.binarySearch(platz, i) );
 System.out.println("Z!" + z);

 }

 return z;
 }

 public static void main(String args[]) {
 Kino test = new Kino(2); // A = 1, B = 2, C = 3, D = 4

 test.addPlatz(104, 2);
 test.addPlatz(108, 2);
 test.addPlatz(144, 2);

 if (test.checkPlatz(44) == true) {
 System.out.println("Jep, frei.");
 } else {
 System.out.println("keiner frei");
 }

 test.hoechstePlatznummer(2);

 }
}

Nun, generische Klassen klingt auf Anhieb kompliziert, sind jedoch, mit ein bisschen Übung eine leichte und sehr sinnvolle Methode um Schablonen, bzw. Templates in Java zu erstellen. Sinn hierbei ist es, dass kein Code dupliziert werden muss, sofern es mehrere Datentypen gibt. Unten genanntes Beispiel zeigt, wie Simpel es gehen kann ein Template zu erstellen.


public class Ausgabe <T> { // <T> deklariert eine Templatevariable mit dem Namen T ohne Datentyp.
 public Ausgabe() {}

 private T out;

 public void setOut(T val) // Weiterhin wird mit dem "Leeren Datentyp" gearbeitet.
 {
 out = val;
 }
 public T giveOut() { // Hier wird der Datentyp ausgegeben, der vorher in dem instanziernden Objekt erstellt wurde
 return out;
 }

public static void main(String[] args) {

 Ausgabe<String> f = new Ausgabe<String>(); // Legt ein Objekt mit Dem Datentyp String an
 f.setOut("test");
 System.out.println( f.giveOut() );

 Ausgabe<Integer> a = new Ausgabe<Integer>(); // Legt ein Objekt mit dem Datentyp Integer an
 a.setOut(5);
 System.out.println( a.giveOut() );
 }

}

Wie ihr seht ist das ganze kein Teufelswerk und kann super einfach umgesetzt werden. Natürlich kann man generische Klassen auf beschränken auf verschiedene Datentypen. Das jedoch zeige ich im nächsten Tutorial.

UMTS

Besonders für den Einsatz von mobilen Internet-Technologien wie UMTS in den eigenen vier Wänden, ist ein UMTS Router eine gute Wahl. Ein solches Gerät stellt eine Internetverbindung via Mobilfunknetz bereit und ermöglicht es dem Nutzer dann das verbinden per WLAN. So können mehrere Notebooks oder Smartphones über einen UMTS-Zugang betrieben werden. Die Bandbreite beträgt optimal 7,2 MBit/s, diese wird dann selbstverständlich unter den verschiedenen Nutzern bzw. Notebooks aufgeteilt.

via mobiles-internet123.de

Wie es leider oft der Fall ist, weiß man nicht sofort wie groß die Datei nach einem Scannvorgang sein wird.
Um dies zu ermitteln benötigt man die Farbtiefe, die Breite und Höhes des Bildes sowie die DPI (Dots per Inch).

Hierfür muss man auch wissen, dass ein Inch exakt 2,54 CM groß ist.

Die Berechnung der Dateigröße berechnet sich aus Grösse = (horizontale Punkte) * (vertikale Punkte) * Farbtiefe.

Die horizontale und verikale Punkte berechnen sich aus

horizontale Punkte = Breite * Auflösung in dpi / (2,54cm/inch)
vertikale Auflösung = Höhe * Auflösung in dpi / (2,54cm/inch)

Somit ergibt sich wiederrum bei folgendem Beispiel diese Berechnung:

(weiterlesen…)

Nunja, zugegeben der Titel sagt nicht viel, jedoch habe ich mich gestern gefragt wie ich ein Array mit mehreren Einträgen bundlen kann.

Zweck war, mehrere Domains inkl. IPs zu sortieren und bei gleichen IPs farbig auszugeben.

Das Ergebniss ist eigentlich relativ einfach wie unten genanntes Beispiel zeigt:

(weiterlesen…)

Um ein Objekt nur einmal zu instanzieren und von jeder Klasse auf das gleiche Objekt zuzugreifen, wird SingleTon genutzt.

Die Problemlösung ist einfach und sauber. Um ein Objekt nur einmal zu instanzieren, wird geprüft ob das Objekt bereits instanziert wurde und falls es bereits instanziert wurde, wird das Objekt zurück gegeben. Falls das Projekt noch nicht instanziert wurde, wird ein neues Objekt angelegt.

Folgendes Codebeispiel liefert in verschiedenen Klassen immer das gleiche Objekt zurück:

(weiterlesen…)