Programm zum einlesen von ISBN Nummern

Scherana

Mitglied
Hey alle zusammen,

ich verzweifel langsam wirklich an dieser Aufgabe, wobei ich eigentlich meine Grundidee gar nicht so schlecht fand..
Also hier mal die Aufgabenstellung:
SchreibteinProgramm, dass eine ISBN einliest und dazu die maximale Leihfrist ausgibt.
Danach soll das Programm wieder den Eingabedialog anzeigen, bis eine leere Zeichenkette (““) eingegeben wird.

Das habe ich bis jetzt:
Java:
import javax.swing.*;
public class ISBN { 
public static void main(String []args)
{
	int a = 3-69687-693-1L;
	int b = 0-90049-701-XL;
	int c = 7-08600-995-4L;
	int d = 9-67565-948-XL;
	int x;
	String numberString = JOptionPane.showInputDialog("Bitte geben Sie ihre ISBN ein.");
	
	int x = BigInteger.parseInt(numberString);
	
	
	if ((x==a)|(x==c))
	System.out.println("14 + Tage");
	
	if ((x==b)|(x==d))
	System.out.println("30 + Tage");
	
	else 
	System.out.println(x + ":Keine ISBN NUmmer");
	
	if (x==0)
	System.exit( 0 );
	
}
	}

also ich wollte es praktisch so machen, dass ich praktisch bei der Eingabe einfach nur schaue, ob die eingegebene Zahl eine der 4 vorhandenen ISBN NUmmern ist. Wenn sie zb a oder c ist, kann man das Buch 14 Tage ausleihen etc. Und am Ende wollte ich, dass man das Programm beenden kann, indem man 0 eingibt.

Leider tun sich alles in allem einige Probleme auf:
1. ich weiß nicht genau welchen Datentyp ich nehmen sol (int oder char) da die zahl ja durch die denkstriche iwie getrennt wird.
2. Weiterhin sagt mir das Programm die ganze Zeit, dass meine Zahlen zu groß seien, dies habe ich jetzt mit dem dranhängenden L gelöst und das klappt auch bei allen, außer dem int c. Und ich weiß wirklich nicht mehr, was ich da noch tun soll.

Es wäre echt toll wenn mir da jemand weiterhelfen könnte. Hab schon in meinem Java Buch und allem geschaut aber außer dem Tipp mit dem angehängten L konnte ich nichts weiter wirklich brauchbares finden :(
 

Camill

Bekanntes Mitglied
1. ich weiß nicht genau welchen Datentyp ich nehmen sol (int oder char) da die zahl ja durch die denkstriche iwie getrennt wird.
Weder 'int' noch 'char'.
2. Weiterhin sagt mir das Programm die ganze Zeit, dass meine Zahlen zu groß seien, dies habe ich jetzt mit dem dranhängenden L gelöst und das klappt auch bei allen, außer dem int c. Und ich weiß wirklich nicht mehr, was ich da noch tun soll.
[c]int a = 3-69687-693-1L;[/c] und [c]int b = 0-90049-701-XL;[/c] soll also richtig sein? Sicherlich nicht.
Dir fehlen Grundlegende Kenntnisse über Datentypen, Trennstriche und 'int' passen nicht zusammen. Schau dir am besten nochmal an welcher Datentyp für was geeignet ist, zb. hier.
 
Zuletzt bearbeitet:

Scherana

Mitglied
also muss ich einen long datentyp verwenden? oder kann ich diese ISBN auch einfach als "string" lesen? Du hast recht, mir fehlen grundkenntnisse, weil ich gerade mal 5 Stunden programmieren hatte. Trotzdem danke für deine Hilfe.
 

Camill

Bekanntes Mitglied
Der Datentyp 'long' ist ebenfalls nur für Zahlen gedacht. Mit 'String' liegst du schon richtig, wie du diese vergleichst findest du im Forum in der FAQ.
 

Scherana

Mitglied
selbst wenn ich jetzt alles mit string mach, krieg ich immer noch die Meldung dass die integer nummer 08600 zu lang ist? wie geht denn das? ich meine, ich habe doch den datentyp string davor??
 

Scherana

Mitglied
Java:
import javax.swing.*;
public class ISBN { 
public static void main(String[] args)
{
	JOptionPane.showInputDialog(null, "Bitte etwas eingeben");
	string a = "3696876931";
	string b = "090049701X";
	string c = "7086009954";
	string d = "967565948X";
	string x = "";
	
	
	if ((x=a)|(x=c))
	System.out.println("14 Tage");
	
	if ((x=b)|(x=d))
	System.out.println("30 Tage");
	
	else 
	System.out.println(x + ":Keine ISBN NUmmer");
	
	if (x="")
	System.exit( 0 );
	
}
	}
 

Camill

Bekanntes Mitglied
Java ist Case-Sensitive, Schlüsselwörter wie 'String' werden großgeschrieben. Das vergleichen der Strings ist immernoch falsch, die getätigte Eingabe läuft ins "leere".
 

Deros

Bekanntes Mitglied
Groß- und Kleinschreibung beachten, richtig ist String.
Ausserdem wird ein Vergleich immer mit zwei Gleichzeichen gemacht, also x==a wobei das nur für die einfachen Datentypen int, long etc. gilt bei String musst du equals nutzen
 

Scherana

Mitglied
mal allgemein ne Frage, wenn ich etwas in ein Eingabefeld reinschreibe und diese Eingabe dann weiter benutzen will. wie mach ich das? Tu ich da die Eingabe als Variable definieren und dann einfach mit der Variablen weiterrechnen oder gibt es iwie nen Befehl, oder ne Zeichenkombi, damit das Programm automatisch mit der Eingabe weiter arbeitet
 

Deros

Bekanntes Mitglied
Java:
String x = JOptionPane.showInputDialog(null, "Bitte etwas eingeben");


aber auch nachzulesen was sonst noch alles gehtklck
 

Scherana

Mitglied
es klappt es klappt es klappt!!!!!
jetzt nur noch eine sache: es zeigt mir immer an, dass es KEINE ISBN NUmmer ist. obwohl ich praktisch mit der Eingabe als x weiterrechne, hab ich wieder iwo einen syntax fehler gemacht?

Java:
import javax.swing.*;
public class ISBN { 
public static void main(String[] args)
{
	
	String x;
	String a = "3696876931";
	String b = "090049701X";
	String c = "7086009954";
	String d = "967565948X";
	x = JOptionPane.showInputDialog(null, "Bitte die ISBN eingeben");

		
	if (x.equals(a) & (x.equals(c)))
	System.out.println("14 Tage");
	
	if (x.equals(b) & (x.equals(d)))
	System.out.println("30 Tage");
	
	else 
	System.out.println(x + ":Keine ISBN NUmmer");

	
}
	}
 

Scherana

Mitglied
so also arbeiten tut das programm ja schonmal *juchey*

jetzt zu der schleife. ich wollte es mit for und break / continue machen, aber leider, zeigt mir mein Programm an, dass mein break und continue außerhalb des loop bzw switch sind.
Was hat das genau zu bedeuten? muss ich da noch ne klammer drumziehen oder wie bekomme ich mein break und continue rein?

Java:
import javax.swing.*;
public class ISBN { 
public static void main(String[] args)
{
	

	String a = "3696876931";
	String b = "090049701X";
	String c = "7086009954";
	String d = "967565948X";
	
	
	String x = JOptionPane.showInputDialog(null, "Bitte die ISBN (ohne Trennstriche) eingeben");

		
{	if ((x.equals(a)) | (x.equals(c)))
	System.out.println("Ausleihfrist: 14 Tage");
	
	if ((x.equals(b)) | (x.equals(d)))
	System.out.println("Ausleihfrist: 30 Tage");
	
	else 
	System.out.println(x + ":Keine ISBN NUmmer");
	
	String e = "";
	
    if (x.equals(e))
	break;
	
	else 
	continue; 
	}

	
}
	}
 

Deros

Bekanntes Mitglied
ich seh keine for-schleife halte das auch für keine gute idee mach ne while schleife mit nem einfachen boolean denn du dann einfach auf false setzt wenn du das programm beenden willst
 

Scherana

Mitglied
und wie genau mache ich das? im programmierkurs war das immer sehr komplioziert. stimmt es in etwa so?

Java:
import javax.swing.*;
public class ISBN { 
public static boolean isbn(string isbnx)
{
	boolean x;

	String a = "3696876931";
	String b = "090049701X";
	String c = "7086009954";
	String d = "967565948X";
	String e = "";
	
	String x = JOptionPane.showInputDialog(null, "Bitte die ISBN (ohne Trennstriche) eingeben");

	while (x=true) 
	x = true;
		
	if ((x.equals(a)) | (x.equals(c)))
	System.out.println("Ausleihfrist: 14 Tage und ausgeliehen");
	x = true;
	
	if ((x.equals(b)) | (x.equals(d)))
	System.out.println("Ausleihfrist: 30 Tage und vorhanden");
	x = true;
	
	else 
	System.out.println(x + ":Keine ISBN NUmmer");
	x = true;
	
	if (!x.equals(e))
	x = false;
	System.exit (0);
	
	
}
	}
 

Deros

Bekanntes Mitglied
x ist kein boolean sondern dein String da brauchste schon ne neue variable und dann mit == vergeichen nicht mit =

brauchst dann auch nicht immer wieder auf true setzen warum sollte da zwischendurch was anderes als true drin sein? theoretisch kommste auch ohne abbruch bedingung hin da du ja eh mit System.exit das Programm killst

und ganz wichtig setz mal klammern um deine if anweisungen und schleifen dann siehst auch wo die anfängt und aufhört
 

Scherana

Mitglied
also ich brauch für meinen String x nochmal eine neue Variable? aber wieder mit String?
wie meinst du das einfach die "trues" weglassen?
vergleichen (==) überall also auch bei den Definitionen oder nur bei dem true/false?
 

Deros

Bekanntes Mitglied
wenn du eine variable definieren willst = wenn du verleichen willst ==

für deine schleife brauchste halt ne neue variable und dafür würde ein boolean reichen vielleicht solltest nochmal ganz von vorne in einem guten buch anfangen da scheint bei dir noch extrem viel zu fehlen
 

Scherana

Mitglied
wie gesagt 5. Stunde programmieren. Da hatte man noch nicht so wirklich viel ^^
Könntest du mir nur nen Vorschlag zeigen, wie ich da rangehen soll? Weil ich hab jetzt alles in boolean geschrieben also ganz oben bei public static ja auch, und ich weiß nicht, ob das unbedingt nötig ist...
 

Deros

Bekanntes Mitglied
nagut will ja mal nicht so sein aber guck dir bitte auch die unterschiede von meinem zu deinem code an und überlegt was die unterschiede machen


Java:
import javax.swing.*;

public class ISBN {
	public static void main(String[] args) {

		String a = "3696876931";
		String b = "090049701X";
		String c = "7086009954";
		String d = "967565948X";
		boolean e = true;
		
		while (e) {
			String x = JOptionPane.showInputDialog(null,
					"Bitte die ISBN (ohne Trennstriche) eingeben");

			if ((x.equals(a)) | (x.equals(c))) {
				System.out.println("Ausleihfrist: 14 Tage und ausgeliehen");
			} else {

				if ((x.equals(b)) | (x.equals(d)))
					System.out.println("Ausleihfrist: 30 Tage und vorhanden");

				else
					System.out.println(x + ":Keine ISBN NUmmer");
			}
			if (x.equals(""))
				e = false;
		}
	}
}
 

Scherana

Mitglied
oh mein gott vielen vielen dank!!!!!

also das boolean bei static void braucht man oben gar nicht?

und das zweite if steht praktisch "unter" dem ersten else?

bei dem letzten
Code:
if (x.equals(""))
                e = false;


woher kennt das Programm die Variable "" ?
 

Deros

Bekanntes Mitglied
String[] args ist für Werte die man zum Programmstart mit übergeben könnte ist für dich jetzt aber eher uninteressant.

weiß nicht was du mit unter meinst. das zweite if wird dann nur geprüft wenn das erste nicht erfolgreich war. schöner wäre das ganze vielleicht mit einer switch anweisung aber vielleicht nicht alles auf einmal.

"" ist keine variable es wird einfach geprüft ob die variable x gleich einem leeren string ist.
theoretisch kannst du auch 2 feste strings vergleichen
z.b. "ich bin ein String".equal("ein anderer String");
macht keinen sinn ist aber möglich
 

Scherana

Mitglied
ja das meinte ich praktisch so "untergeordnet" weiß nicht, ob man den begriff so nehmen kann, aber das meinte ich auf jeden fall damit :)

ah okay danke :)


wow super vielen dank!!! :D
 

Neue Themen


Oben