PI Berechnung

Hallo zusammen, ich habe mal wieder ein kleines Programm für den aufmerksamen Leser. Diesmal versuche ich mittels eines Java-Programms die Zahl PI näherungsweise zu bestimmen.

import java.io.*;
public class Pi {

	static BufferedReader br = new BufferedReader(
			new InputStreamReader(System.in));
	public static void main(String[] args)
	throws IOException
	{

		System.out.println("Bitte geben Sie die Anzahl ein: ");
		int n = Integer.parseInt(br.readLine());
		double pi = 0;

		for(int i = 0; i < n; ++i)
		{
			if(i % 2 == 0)
			{
				pi += (1.0 / (2*i+1));
			}
			else
			{
				pi -= (1.0 / (2*i+1));
			}
		}

		System.out.println((4*pi) + " " + pi);
	}

}

Viel Spaß damit.

Rekursion – Einen String rückwärts ausgeben

Hilfe! Das böse Wort! Rekursion :-)

So wild ist das gar nicht, denn die Rekursion lässt sich optimal bei Problemen einsetzen, die eine gewisse Laufzeit haben, d.h. so ziemlich alles, was sich mit einer FOR-Schleife lösen lässt, kann ich auch rekursiv lösen.

Rekursiv heißt eigentlich nichts anderes, als das sich eine Methode bis zu einer gewissen Abbruchbedingung immer wieder selbst aufruft, bis eine Abbruchbedingung erreicht wird.

Als Beispiel habe ich einen String, der rückwärts ausgegeben werden soll.

	public static void rkw(String s)
	{
		if(s.length() > 0)
		{
			System.out.print(s.charAt(s.length()-1));
			rkw(s.substring(0, s.length()-1));
		}

Die Methode rkw erwartet als Übergabeparameter einen String. Wird dieser übergeben, überprüft rkw zuerst, ob die Länge größer 0 ist, wenn ja, dann wird die letzte Stelle des Strings mit System.out.print() ausgegeben.
Anschließend rufen wir rkw erneut auf, diesmal aber mit dem veränderten String s, dieser hat nämlich nun nur noch eine Länge von 0 bis Ende-1, d.h. es wird am Ende einfach das letzte Zeichen “abgeschnitten”. Das machen wir solange, bis der String komplett umgekehrt wurde, dann ist die Abbruchbedingung erreicht und wir verlassen die Methode wieder und das kleine Programm wird beendet.

Hier folgt der gesamte Quelltext:


public class rückwärts {

	public static void rkw(String s)
	{
		if(s.length() > 0)
		{
			System.out.print(s.charAt(s.length()-1));
			rkw(s.substring(0, s.length()-1));
		}

	}
	public static void main(String[] args) {

		String s = "Das ist ein String!";

		System.out.println(s);
		rkw(s);

	}

}

Ausgabe:

Das ist ein String!
!gnirtS nie tsi saD

Beispiele für Methoden der Klasse String

Hier nur ein wirklich sehr leichtes Beispiel für die Methoden, die uns die Klasse String zur Verfügung stellt.

Bei Gelegenheit werde ich dazu noch ein ausführlicheres Beispiel präsentieren.

import java.io.*;
public class Zeichenketten {

	static BufferedReader br = new BufferedReader(
			new InputStreamReader(System.in));

	public static void main(String[] args)
	throws IOException
	{
		String vorname, name;

		System.out.println("Bitte geben Sie Ihren Vornamen ein: ");
		vorname = br.readLine();
		System.out.println("Bitte geben Sie Ihren Nachnamen ein: ");
		name 	= br.readLine();

		System.out.println("--------------------------------------------------------------");
		System.out.println("Einige Beispiele, was man mit Zeichenketten/Strings machen kann:");
		System.out.println("--------------------------------------------------------------");

		System.out.println("vollständige Ausgabe: " + vorname + " " + name);
		System.out.println("V. Name: " + vorname.charAt(0) +". " + name);
		System.out.println("Vorname N.: " + vorname +". " + name.charAt(0));
		System.out.println("V. N.: " + vorname.charAt(0) +". " + name.charAt(0) + ".");
		System.out.println("erster Buchstabe Vorname fehlt:" + vorname.substring(1));
		System.out.println("erster Buchstabe Nachname fehlt:" + name.substring(1));

	}

}

Viel Spaß beim Modifizieren und Ausprobieren!

Einfache Tabelle mit ASCII-Zeichen

Hier ein Beispiel, wie man eine einfache Tabelle aus den Zeichen “+”, “-” und “|” erstellen kann.
Sie ist über die Variablen z (=Zeilen) und s (=Spalten) beliebig erweiterbar.

public class Tabelle {

	public static void main(String[] args) {

		int z=10; // Zeilen
		int s=5; // Spalten

		for(int i=0; i < z; ++i) // Zeilen
		{
			System.out.print("+");

			for(int k=0; k < s; ++k)
			{
				System.out.print("-------");
				System.out.print("+");
			}

			System.out.println();
			System.out.print("|");

			for(int k=0; k < s; ++k)
			{
				System.out.print("\t|");

			}

			System.out.println();
			System.out.print("|");
			for(int k=0; k < s; ++k)
			{
				System.out.print("\t|");

			}

			System.out.println();
		}
		System.out.print("+");

		for(int k=0; k < s; ++k)
		{
			System.out.print("-------");
			System.out.print("+");
		}

	}

}

Über einen BufferedReader oder Scanner, oder ganz einfach, über die Argumentsliste, könnte man auch die Werte für die Anzahl Zeilen/Spalten übergeben.

Ein einfaches Beispiel für Minimal- / Maximal-Wert – Ermittlung

Mit diesem kleinen Programm ist es möglich, dass 2 Werte über die Konsole eingelesen werden und daraus jeweils das Minimum und Maximum ermittelt und ausgegeben wird.

// Es werden zwei Zahlen über die Konsole eingelesen und es
// wird das Minimum und Maximum ermittelt und ausgegeben
import java.io.*;
public class MinMax {

	static BufferedReader br = new BufferedReader(
			new InputStreamReader(System.in));

	public static void main(String[] args)
	throws IOException
	{
		int x, y, max, min;
		System.out.println("Geben Sie bitte 1. Wert ein: ");
		x = Integer.parseInt(br.readLine());
		System.out.println("Geben Sie bitte 2. Wert ein: ");
		y = Integer.parseInt(br.readLine());

		if(x < y)
		{
			max = y;
			min = x;
		}
		else
		{
			max = x;
			min = y;
		}
		System.out.println("X = " + x + " Y = " + y + "\n" +
				"Max-Wert: " + max + " Min-Wert: " + min);
	}

}

Sicher ist es noch nicht wirklich sinnvoll, Min und Max zwischen zwei Zahlen zu ermitteln, doch dieses einfache Beispiel dient der Veranschaulichung, wie es funktioniert.

Viel Spaß beim Ausprobieren.
P.S. Eine erweiterte Version folgt…

Hallo Welt Programm – Version 2

Um einmal zu zeigen, die der Datentyp String verwendet werden kann, habe ich das Hallo Welt Programm, du erinnerst dich, einmal verändert.

public class HalloWelt2
{
&nbsp;&nbsp;String zeichenkette = "Hallo Welt - Version 2";
&nbsp;&nbsp;public static void main(String[] args)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(zeichenkette);
&nbsp;&nbsp;}
}

Die kleine Änderung im Quellcode ist dir sicher schon aufgefallen. Es wurde direkt nach der öffnenden Klammer { der Klasse, wurde eine Variable “zeichenkette” vom Datentyp String deklariert und mit dem Wert “Hallo Welt – Version 2″ initialisiert.
Die Zeichenkette “Hallo Welt” in dem ursprünglichen Programm hatten wir ja direkt im System.out.println – Statement eingetragen und somit ausgegeben.
In der veränderten Version bekommt System.out.println in den Klammern die Variable “zeichenkette” übergeben und die Ausgabe wird so erzeugt.

Zusammenfassend können wir also sagen,
- System.out.println() kann Ausgaben auf der Konsole erzeugen
- im System.out.println() – Statement kann man entweder den Ausgabetext oder eine Variable übergeben, um das Ganze auf der Konsole auszugeben.

Hallo Welt – Das erste JAVA-Programm

Wie in jeder Programmiersprache, wird auch in JAVA das erste Programm den Text “Hallo Welt” ausgeben.

Wie das geht, zeige ich euch im Folgenden…

class HalloWelt
{
   public static void main(String args)
   {
      System.out.print("Hallo Welt");
   }
}

Im nächsten Artikel gibt es dann gleich ein Beispiel für grafische Programmierung in Java.