überprüfungsschwierigkeit bei der klasse Buch

Status
Nicht offen für weitere Antworten.

nata

Bekanntes Mitglied
ich habe buch getestet und liefert mir fehler bei der zeile 53 und 58 was mache ich falsch?
Java:
public class Buch{
	private String titel;
	private String autor;
	private double preis;
	private String isbn;
	
	public Buch(String titel, String autor, double preis, String isbn)throws Exception{
		setTitel(titel);
		setAutor(autor);
		setPreis(preis);
		setIsbn(isbn);
	}
	
	public void setTitel(String titel)throws Exception{
		if(titel == null){
			throw new Exception("Titel darf nicht null sein");
		}
		if(titel.length() < 1 || titel.length() > 30){
			throw new Exception("Titel darf bis 30 zeichen lang sein");
		}
	
		this.titel = titel;	
	}
	
	public void setAutor(String autor)throws Exception{
		if(autor == null){
			throw new Exception("Autor darf nicht null sein");
		}
		if(autor.length() < 1 || autor.length() > 30){
			throw new Exception("Autor darf bis 30 zeichen lang sein");
		}
	
		this.autor = autor;	
	}
	
	public void setPreis(double preis)throws Exception{
		
		if(preis < 3.5 || preis > 350){
			throw new Exception("preis soll zwischen 3 euro und 350 euro sein");
		}
	
		this.preis = preis;	
	}
	
	public void setIsbn(String isbn)throws Exception{

		if(isbn.length() < 7 || isbn.length() > 12){
			throw new Exception("Isbn nummer darf nur 7 bis 12 zeichen enthalten");
		}
		
		for(int i = 0 ; i < isbn.length() -1 ; i++){
			char c = isbn.charAt(i);
			if(!Character.isDigit(c) || Character.charAt(i) != '-'){
				throw new Exception("Isbn soll bis letzte buchstaben nur ziffern oder bindestriche enthalten");
			}
						            	
		}
		if(!Character.isDigit(isbn.charAt(isbn.length())) || Character.charAt(isbn.length()) != '-' || Character.charAt(isbn.length()) != 'X'){
				throw new Exception("letzte zeichen soll entweder zahl ,bindestrich oder X sein");
			}
			
			this.isbn = isbn;
		
	}
	
	public String getIsbn(){
		return isbn;
	
	}
	
	public String toString(){
	
		return autor + "  " + titel + "  " + isbn + "  "+ preis;	
	
	}
	
	
}

gegeben ist folgende : String isbn - ist zwischen 7 und 12 Zeichen lang, darf nur aus Ziffern und
Bindestrichen bestehen, und kann mit einem „X“ enden
 
danke jungs.
also ich habe Statt Character. ... isbn. ... geschrieben und soweit liefert keinen fehler
 
doch mich zu fruh gefreut ;(
Java:
public class Buch{
	private String titel;
	private String autor;
	private double preis;
	private String isbn;
	
	public Buch(String titel, String autor, double preis, String isbn)throws Exception{
		setTitel(titel);
		setAutor(autor);
		setPreis(preis);
		setIsbn(isbn);
	}
	
	public void setTitel(String titel)throws Exception{
		if(titel == null){
			throw new Exception("Titel darf nicht null sein");
		}
		if(titel.length() < 1 || titel.length() > 30){
			throw new Exception("Titel darf bis 30 zeichen lang sein");
		}
	
		this.titel = titel;	
	}
	
	public void setAutor(String autor)throws Exception{
		if(autor == null){
			throw new Exception("Autor darf nicht null sein");
		}
		if(autor.length() < 1 || autor.length() > 30){
			throw new Exception("Autor darf bis 30 zeichen lang sein");
		}
	
		this.autor = autor;	
	}
	
	public void setPreis(double preis)throws Exception{
		
		if(preis < 3.5 || preis > 350){
			throw new Exception("preis soll zwischen 3 euro und 350 euro sein");
		}
	
		this.preis = preis;	
	}
	
	public void setIsbn(String isbn)throws Exception{

		if(isbn.length() < 7 && isbn.length() > 12){
			throw new Exception("Isbn nummer darf nur 7 bis 12 zeichen enthalten");
		}
		
		for(int i = 0 ; i < isbn.length() -1 ; i++){
			char c = isbn.charAt(i);
			if(!Character.isDigit(c) && isbn.charAt(i) != '-' ){
				throw new Exception("Isbn soll bis letzte buchstaben nur ziffern oder bindestriche enthalten");
			}
						            	
		}
		if(!Character.isDigit(isbn.charAt(isbn.length())) || isbn.charAt(isbn.length()) != '-' || isbn.charAt(isbn.length()) != 'X'){
				throw new Exception("letzte zeichen soll entweder zahl ,bindestrich oder X sein");
			}
			
			this.isbn = isbn;
		
	}
	
	public String getIsbn(){
		return isbn;
	
	}
	
	public String toString(){
	
		return autor + "  " + titel + "  " + isbn + "  "+ preis;	
	
	}
	
	
}

Java:
public class BuchMain{
public static void main(String args[]) {
		try {
			Buch b1= new Buch("dssdf", "dhdj", 23, "28965437");
			b1.toString();
			 
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}

}

diese fehlermeldug was mir compiler liefert verstehe ich nicht.wo liegt mein fehler?
 
der fehler ist in der zeile 58
[c] if(!Character.isDigit(isbn.charAt(isbn.length())) || isbn.charAt(isbn.length()) != '-' || isbn.charAt(isbn.length()) != 'X')[/c]

isbn.lenght()-1 musst du abfragen.
desweiteren: meinst du nicht, du müsstest das gane UND verknüpfen, statt ODER (bzw, so wie du es jetzt hast) ? 🙂

Java:
char last = isbn.charAt(isbn.length() - 1);
		if (!Character.isDigit(last) && last != '-' && last != 'X') {
			throw new Exception(
					"letzte zeichen soll entweder zahl ,bindestrich oder X sein");
		}

/edit: @main-test-programm: b1.toString(); <-- du willst das doch sicher ausgeben oder? das gibt dir ja schließlich einen string zurück:
[c] System.out.println(b1.toString);[/c] bzw, toString kann man sich in dem fall sparen (weil das durch print, bzw String.valueOf automatisch aufgerufen wird) -->
[c] System.out.println(b1);[/c]

/edit2 :
Java:
 if(isbn.length() < 7 && isbn.length() > 12){
            throw new Exception("Isbn nummer darf nur 7 bis 12 zeichen enthalten");
        }

hmm?? auch hier wieder operatoren verwechselt 😀
 
Zuletzt bearbeitet:
in bezug zu operatoren.ja ich mache oft fehler,vieleicht weil ich in kopft irgendwie auf meine sprache übersetzte und in georgische logik klingt das so.😉
danke dir vielmals für deine unterstützung.hast mir viel geholfen.habe getestet und ales klappt(party)
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben