Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo Leute,

ich habe ein Programm geschrieben, dass mir eine beliebige Anzahl von ISBN auf ihre Gültigkeit überprüfen soll. Leider funktionieren ein paar Kleinigkeiten noch nicht so richtig...Und zwar:

1. Bsp:

java IsbnTester 9783486582314 3170192868 9783170192867 9783486582314
Dabei wird nur die erste ISBN für gültig erklärt, der Rest für ungültig! Und das, obwohl ich die erste (gültige) ISBN zum Test noch mal an vierter Stelle habe testen lassen. Wenn man die anderen ISBN einzeln überprüft, berechnet er mir auch, dass sie gültig sind (was auch auf jeden Fall so ist). Kann mir jemand sagen, woran das liegen könnte? 2. Ich wollte noch einbauen, dass eine Fehlermeldung ausgespuckt wird, wenn man in eine ISBN irgendwelche Buchstaben (aus Versehen) eintippt (z.B. 473kjl8n10): siehe die drei auskommentierten if-Bedingungen bei ISBN 13-stellig. Irgendwie funktioniert aber keines der drei so 100%ig...also noch mal: Jede ISBN soll auf [a-zA-Z] überprüft werden und dann soll eine Fehlermeldung ausgespuckt werden. Ich bin für jede Hilfe dankbar! Grüße
public class IsbnTester {


	public static void main(String[] args) {


		int i = args.length;    //Anzahl der eingegebenen ISBN

		int stringstelle = 0;   //Index fuer args

                int[] z = new int[13];  //Array fuer Ziffern 1 bis 10 bzw. 13

                int pruefsumme = 0;//Pruefsumme

		int pruefzahl = 0;  //Pruefzahl

                int einser = 0; //Zahlen, die mit 1 multipliziert werden

                int dreier = 0; //Zahlen, die mit 3 multipliziert werden


		for (int zaehler = 1; zaehler <= i; zaehler++) {


			String isbn = (args[stringstelle]);


                        if (isbn.length() == 10) {


				for (int n = 0; n < 10; n++) {


                                	if (n < 9)

						z[n] = (int)(isbn.charAt(n) - 48);

                                	else {

                                    		if (isbn.endsWith("X") | isbn.charAt(n) == 'x')

                                        		z[n] = 10;

                                    		else

                               	        		z[n] = (int)(isbn.charAt(n) - 48);                                 

                                	}


                                	if (n < 9)

                                    		pruefsumme += (z[n] * (10 - n));


                            	}                          


				if (isbn.charAt(9) == '0')

					pruefzahl = pruefsumme % 11;                           

                        	else

                        		pruefzahl = 11 - (pruefsumme % 11);                                             


                        	if (pruefzahl == z[9])

                                	System.out.println("Die ISBN "+isbn+" ist gueltig!");

                        	else

                                	System.out.println("Die ISBN "+isbn+" ist leider ungueltig!");


                        }


                        else if (isbn.length() == 13 && (isbn.startsWith("978") | isbn.startsWith("979"))) {


                                /*if (isbn.contains(['[a-z]*')) {

                                        System.out.println("Die ISBN "+isbn+" ist leider ungueltig! Bitte nur Ziffern 0-9 verwenden!");

                                        return;

                                }


                                int index = isbn.indexOf('m');


                                if (index != -1) {

                                        System.out.println("Die ISBN "+isbn+" ist leider ungueltig! Bitte nur Ziffern 0-9 verwenden!");

                                        return;

                                }


                                if (isbn.matches("\\p{Alpha}+")) {

                                    System.out.println("Die ISBN "+isbn+" ist leider ungueltig! Bitte nur Ziffern 0-9 verwenden!");

                                    break;

                                }*/


                        	for (int n = 0; n < 13; n++) {


					z[n] = (int)(isbn.charAt(n) - 48);


                                	int feld = n % 2;


                                	if (feld == 0 && n < 12)

                                    		einser += z[n];

                                	else if (feld != 0 && n < 12)

                                    		dreier += (z[n] * 3);


                            	}


                                pruefsumme = dreier + einser;


                                if (isbn.charAt(12) == '0')

                                        pruefzahl = pruefsumme % 10;

                                else

                                        pruefzahl = 10 - (pruefsumme % 10);


                                if (pruefzahl == z[12])

                                        System.out.println("Die ISBN "+isbn+" ist gueltig!");

                                else

                                        System.out.println("Die ISBN "+isbn+" ist leider ungueltig!");


                        }                  


                        else

                        	System.out.println("Ungueltige Eingabe fuer ISBN "+isbn+"! Ueberpruefen Sie:\n"+""+

                                        "1. ISBN 10- oder 13-stellig? \n2. Falls 13-stellig: Ersten drei Ziffern = 978 "+

                                        "oder 979? \n3. Eingabe ohne Bindestriche?");


			++stringstelle;


		}


		if (args.length == 0)

                	System.out.println("Ungueltige Eingabe! Ueberpruefen Sie:\n1. ISBN 10- oder 13-stellig?"+""+

                                "\n2. Falls 13-stellig: Ersten drei Ziffern = 978 oder 979?\n3. Eingabe ohne Bindestriche?");


	}


}

Ich habe jetzt nur einmal flüchtig drüber geschaut, aber als erstes fällt mir auf, dass du einige Variablen bei der Prüfung der nächsten ISBN nicht wieder auf ihren Startstand zurück setzt.

Vor allem deine Variablen "einser" und "dreier" rechnen bei der 2. Prüfungen mit den Werten der 1. Prüfung weiter.

Stimmt, das war es...das gleiche galt auch für pruefsumme und -zahl, habe die jetzt einfach in die erste for-Schleife gesetzt.

Vielen Dank! :)

Kann mir jetzt noch einer sagen, wie ich überprüfen kann, ob ein String zB Buchstaben [a-zA-Z] enthält? Bei mir hat es bis jetzt irgendwie nur mit einzelnen Buchstaben geklappt...aber nicht von a-z :?:

Hab's damit hinbekommen...danke schön!

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.