[Gelöst] Java String mit Zahl vergleichen

Rene011

bekommt Übersicht
Guten Tag,

ich lerne seit kurzem Java und möchte ein kleines Programm schreiben welches den Fahrpreis für eine Zug karte ausrechnet. Eigentlich klappt alles allerdings habe ich ein Problem meinen eingegeben String wert mit einer zahl zu vergleichen weil mir der Befehl nicht genau bekannt ist und ich ihn auch durchs suchen im Internet nicht finden kann. Hier ist erstmal mein Code.

Code:
import java.io.*;

public class bahn1 {


	public static void main(String[] args) throws java.io.IOException {

		BufferedReader br = new BufferedReader(
	    		new java.io.InputStreamReader(
	    			System.in ) );
		
    System.out.println("Bitte geben Sie die Entfernung an: ");
    	String E = br.readLine();
    System.out.println("Bitte geben Sie die Anzahl der Fahrgäste an: ");
    	String P = br.readLine();
    System.out.println("Möchten Sie einen Schnellexpress J/N: ");	 
	String S = br.readLine();
    System.out.println("Möchten Sie ihre Plätze Reservieren J/N: ");
	String R = br.readLine();
    System.out.println("Ist ihre Fahrt eine Nachtfahrt: ");
		String N = br.readLine();
		
	if(E < 100);
	   E = E * 0.25;
	
  }
	
	
}

Mein Problem ist halt das die Operatoren "<" und "*" nicht akzeptiert werden.
Ich würde mich über eine Positive Antwort sehr freuen

MfG René
 
Klick drauf ;)


:p


Ich würde allerdings noch eine extra Methode dafür bauen.
Eine Methode, die überprüft, ob das überhaupt funktioniert.
So kannst du Fehler einfacher abfangen.
So mache ich das zumindest immer^^

Und so würde die Methode in Java aussehen:

Code:
        public static Boolean TryInt(String text)
        {
            // Beginn des try-Blocks
            try
            {
                // Der Text wird in die Zahl konvertiert und
                // wenn es funktioniert, wird 'true' zurück gegeben
                int Zahl = Integer.parseInt(text);
                return true;
            } // Beginn des catch-Blocks
            catch
            {
                // Konvertierung hat einen Fehler ergeben,
                // also wird 'false' zurück gegeben
                return false;
            }
        }
        // Du kannst noch den Fehler direkt ausgeben lassen.
        // Dazu schreibst du hinter das 'catch' folgendes: (Exception ex)
        // Dann ist der Fehler in der Variable 'ex' gespeichert


// (Ungetestet, da ich Java Runtime nicht installiert habe)

Die try-Catch-Blöcke fangen Exceptions, also Fehler, ab.
Wenn im Try-Block also versucht wird, einen Buchstaben in eine Zahl zu konvertieren, würde das einen Fehler geben, stattdessen springt das Programm in den catch-Block und führt den dort enthaltenen Code aus.
Die Methode ist kurz und einfach, vielleicht gibt es noch eine elegantere Möglichkeit, aber mir reicht das hier völlig aus, da ich das nur sehr selten brauche.

Try-Catch-Blöcke in Java




verborgener Text:
Kann man das als Schleichwerbung bezeichnen? Egal^^

Ich wollte nur den Tipp geben, dass ich persönlich Java überhaupt nicht mag. Wir haben das ein Semester in der Schule gemacht und ich habe parallel mich in die C#-Thematik eingearbeitet und bin zu dem Schluss gekommen, dass C# gegenüber Java einfach eine riesige Sammlung an Vorteilen hat.
Gut, das kann auch daran liegen, dass wir mit BlueJ arbeiten mussten.

Auf jeden Fall kann ich C# empfehlen, da man von dort dann auch relativ einfach auf C++ umsteigen kann. Und damit ist man dann auch wieder Framework-unabhängig. Auch, wenn man es trotzdem nutzen kann.
Ganz abgesehen davon bieten diese C-Sprachen unglaublich viele Möglichkeiten. Du kannst praktisch alles machen^^

Aber das größe Meisterstück: Visual Studio *-*
Die Vollversion ist fast schon Diebstahl, aber es reicht auch die Express-Version völlig aus um gut zu programmieren.


So, genug Werbung gemacht^^






Edit:


So sähe dann dein Programm aus:

Code:
import java.io.*;

public class bahn1
{
    public static void main(String[] args) throws java.io.IOException
    {
        BufferedReader br = new BufferedReader(
	    	 new java.io.InputStreamReader(
	  	     System.in ) );
        
        System.out.println("Bitte geben Sie die Entfernung an: ");
            int E = Integer.parseInt(br.readLine());
        System.out.println("Bitte geben Sie die Anzahl der Fahrgäste an: ");
            int P = Integer.parseInt(br.readLine());
        System.out.println("Möchten Sie einen Schnellexpress J/N: ");	 
	        String S_ = br.readLine();
        System.out.println("Möchten Sie ihre Plätze Reservieren J/N: ");
	        String R_ = br.readLine();
        System.out.println("Ist ihre Fahrt eine Nachtfahrt J/N: ");
            String N_ = br.readLine();

        Boolean R;
        if (R_ == "J") R = true;
        else if (R_ == "N") R = false;
        else System.out.println("Falsche Eingabe");

        Boolean S;
        if (S_ == "J") S = true;
        else if (S_ == "N") S = false;
        else System.out.println("Falsche Eingabe");

        Boolean N;
        if (N_ == "J") N = true;
        else if (N_ == "N") N = false;
        else System.out.println("Falsche Eingabe");
        
        if(E < 100)
            E = E * 0.25;
    }
}

Hab da noch die beiden Ja-Nein-Fragen umgebaut, dass am Ende ein Boolen raus kommt.
Und ganz am Ende war hinter der If-Klammer ein Apostroph. War das Absicht?
 
Zuletzt bearbeitet:
Erstmal vielen dank für deine Schnelle Antwort.
Dank deinem Vorschlag klappt es jetzt so wie ich es mir vorgestellt habe.
Bezüglich deiner Schleichwerbung ich interessiere mich eigentlich auch mehr für die sprachen C# sowie C++ allerdings lernen wir in der Schule Java.
Und das Apostroph war keine Absicht.
Wie schon erwähnt vielen dank für deine Hilfe das ist hier wirklich eine sehr gute Community.

MfG René
 
Wir haben auch ein Semester Java gemacht und ich hab trotzdem mit C# angefangen^^

Du kannst sehr viele Parallelen ziehen und in der Schule geht man normalerweise gar nicht so tief in die Matherie, wie du es bei dir Zuhause tun würdest. Zumindest war das bei uns so^^ Konvertierung von Datentypen haben wir z.B. nie behandelt.


Wenn du dich also mehr für eine der C-Sprachen interessierst, dann solltest du dem auch nachgeben. Solange du im Unterricht aufpasst, dann wirst du keine Probleme haben, deine C/C#/C++ Kenntnisse auch in Java anzuwenden.


Was die C-Sprachen angeht: Nimm C#.
Ich kenne C++ nur flüchtig, aber es ist sich sehr ähnlich. C# ist aber immer noch einfacher, wo auch das Net-Framework nicht ganz unschuldig dran ist^^
Dann gibt es noch Visual Basic, das ebenfalls eine Sprache von Microsoft ist und von Java, sowie C# beeinflusst wurde.
Dann gibts noch F# und wie die alle heißen, aber die kenne ich nicht alle^^

ALso wenn du dich entscheiden solltest, mit C# anzufangen, dann schreib mir. Ich helfe gerne^^
Außerdem habe ich dann gleich noch ein gutes Video-Tutorial. Derjenige, der dieses Tutorial gemacht hat, hat auch ein Tutorial über C++ und die Script-Sprache Autoit gemacht. Doch C# ist bei ihm am umfangreichsten.
Außerdem habe ich auf meiner Festplatte noch irgendwo ein PDF-Tutorial über C++, das allerdings Grundkenntnisse vorraus setzt.



Rene027 schrieb:
Wie schon erwähnt vielen dank für deine Hilfe das ist hier wirklich eine sehr gute Community.

Hmm, erzähl das doch mal rum^^ Wir würden es dir alle danken^^
 
Also da ich in der Schule in einer IT Klasse bin (ich mache dort eine Ausbildung zum technischen Assistent für Informatik + Abi) also werden wir tief in die Materie eingehen. Des weiterem werden wir nächstes Jahr mit C# in der Schule anfangen.
Und leider habe ich nicht immer so viel Zeit wegen der Schule jetzt noch eine weitere Sprache zu lernen von daher will ich mich erstmal auf Java konzentrieren und neben bei wenn ich wirklich Zeit habe auf andere Sprachen.

Hmm, erzähl das doch mal rum^^ Wir würden es dir alle danken^^

Habe das Forum schon in meiner Klasse weiter empfohlen.
 
Achso, ja das ändert die Lage^^ Dann ist es natürlich sinnvoller, Java zu lernen und da ihr später sowieso mit C# anfangt, ist das ja auch geklärt^^


Rene027 schrieb:
Habe das Forum schon in meiner Klasse weiter empfohlen.

Na das ist doch mal schön zu lesen^^
 
Oben