Bitte Bitte Hilfe!!

Hallo,
ich muss bis montag noch eine letzte Hausaufgabe für Informatik beenden.

Wir müssen für Java ein Barcode programm schreiben.

Und zwar es sollen 13 Zahlen von dem Nutzer eingegeben werden.
also z.b. x1=2 x2=9 x3=5 x4=7 x5=8 x6=1 x7=0 x8=3 x9=3 x10=5 x11=7 x12=9 x13=5

Dann sollen die ungraden x'zahlen also x1, x3, x5 x7, x9 und x11 addiert und mit 3 multipliziert werden.

x2,x4,x6,x8,x10 und x12 werden addiert.

Dann werden die beiden Ergebnisse addiert und mit mod10 geteilt.
das ergebmis was man dann bekommt soll x13 sein. Die check digit.

kann mir bitte jemand helfen. Ich schaffe es nicht. Weder zeitlich noch weiß ich wo ich anfagen soll....
 

Landei

Top Contributor
Das würde ich gerade nicht machen. Am besten ist es, wenn du schon ein Beispiel mit Lösung gegeben hast, ansonsten rechne eines per Hand durch. Dann schreibe das Programm mit diesen Zahlen fest einprogrammiert, und versuche es, zum Laufen zu bringen. Wenn es mit diesen Werten korrekt läuft, wäre es eine gute Idee, weitere Beispiele durchzuprobieren. Dann, und erst dann kümmere dich um die Eingabe.

Der Grund ist einfach: Solange der Hauptteil noch irgendwo falsch ist, musst du das Programm öfters laufen lassen, und wenn du dann jedesmal die Zahlen von Hand eintippst, dauert das zu lange und du vermachst dich schnell einmal.
 
Zuletzt bearbeitet:
Okay ich habe bis jetzt das hier


Java:
import java.util.Scanner;
public class barcode {
   public static void main (String [] args){
   
   Scanner klavye=new Scanner(System.in); 
   double [] barcode = new double[13];
   System.out.print("barcode=");
   double Barcode;
   Barcoderakamlari=klavye.nextDouble();
  
  }
}


Ist das denn soweit richtig? Ich wollte das das programm hier sagt das 13 zahlen eingegeben werden sollen.

Ja ich habe schon ein Beispiel mit der Hand ausgerechnet aber wir sollen keine fetsen Zahlen benutzen...
 
Zuletzt bearbeitet von einem Moderator:
ja ich habe es geändert.

Er fragt mich jetzt 13 mal nach den 13 verschiedenen Barcode zahlen.

Java:
import java.util.* ;
public class  barcode{
  
  public static void main (String [] args) {
  
  Scanner klavye = new Scanner (System.in);
  int barcode [] = new int [13];

  for (int i=0; i < barcode.length; i++) {
  
  System.out.println("barcode Ziffern");
  barcode [i] = klavye.nextInt();

  }
}
//}

Wie schaffe ich es jetzt das er die 1,3,5,7,9 Zahl addiert und mit 3 multipliziert?

danke :)
 
Zuletzt bearbeitet von einem Moderator:
M

Marcinek

Gast
Auf ein ArrayElement kannst du mit x[1..2] zugreifen.

P.S., da Ardauer schon weg ist übernehme ich das mal.

Siehst du nicht diesen Hinweis beim posten?

Java™ Quelltext ist bitte in
Java:
-Tags zu schreiben: [code=Java]hier Java Code einfügen

Da ist auch noch ein Ausrufezeichen davor.
 
Zuletzt bearbeitet von einem Moderator:

Landei

Top Contributor
Nur so am Rande: Java™ Quelltext ist bitte in
Java:
-Tags zu schreiben: [noparse][code=Java]hier Java Code einfügen
[/noparse]

Wie man mit einer Schleife alle Elemente eines Arrays durchgeht, weisst du ja schon: [c]for (int i=0; i < barcode.length; i++)[/c] Das [c]i++[/c] ist für die Erhöhung der Schleifenvariable um 1 gedacht, man könnte aber auch [c]i += 1[/c] oder [c]i = i + 1[/c] schreiben. Wie könnte man wohl erreichen, dass die Schleife immer eine Zahl überspringt? Und wie kann man erreichen, dass [c]i[/c] nicht bei 0, sondern bei 1 anfängt? Wenn du das weißt, kannst du die Aufgabe lösen.
 

jboesche

Mitglied
? 13 zahlen sollen vom Nutzer willkürlich eingeben werden dann werden die ersten nur die ungraden x zahlen außer die x13 addier und mal drei genommen und die geraden werden addiert und dann wird das Produkt und die Summe zusammen addiert und Mod 10 genommen was dann x13 ergibt? Ähm da ist irgendein fehler. Die Zahlen haben gar kein bezug zu x13.


x13 =(((x1+x3+x5+x7+x9+x11)*3) + (x2+x4+x6+x8+x10+x12)) % 10)

wären die eingaben 2,3,5,6,7,2,1,5,3,3,5,7,9,9

wäre x13 nach zuweisung 9 das ergebnis von der berechnung aber 5.

oder hab ich da was falsch verstanden?
 

Kiri

Bekanntes Mitglied
So, weil wir nun Weihnachten haben, schenke ich dir einen Code der funktioniert. Verbesserungen sind natürlich immer möglich! Frohe Weihnachten!!!

Java:
import java.util.Scanner;

/**
 *
 * @author Kiri
 */
public class Barcode {
    public static void main (String [] args){
        int sumGerade, sumUngerade, ergPruefsumme;
        String barcode;
        boolean checkOK = false;
        int[] barcodeArr;
        barcode = eingabe();
        barcodeArr = setBarcodeArr(barcode);
        sumGerade = berechneGerade(barcodeArr);
        sumUngerade = berechneUngerade(barcodeArr);
        ergPruefsumme = berechnePruefsumme(sumGerade, sumUngerade);
//        System.out.println("gerade: " + sumGerade);
//        System.out.println("ungerade: " + sumUngerade);
//        System.out.println("Pruefsumme " + ergPruefsumme);
        checkOK = checkBarcode(ergPruefsumme, barcodeArr);
        if(checkOK){
            System.out.println("Der Barcode ist OK!");
        }else{
            System.out.println("Der Barcode ist falsch!");
        }
    }
    
    public static String eingabe(){
        String barcode = "";
        boolean eingabe13 = false;
        Scanner klavye = new Scanner(System.in);
        while(!eingabe13){
            System.out.println("Bitte geben Sie einen 13-stelligen Barcode ein:");
            barcode = klavye.next();
            if(barcode.length() == 13){
                eingabe13 = true;
            }else{
                System.out.println("Deine Eingabe (" + barcode + ") hat keine 13 Zeichen!");
            }
        }
        return barcode;
    }
    
    public static int[] setBarcodeArr(String barcode){
        int[] barcodeArr = new int[13];
        for(int i = 0; i < 13; i++){
            barcodeArr[i] = Integer.parseInt(barcode.substring(i, i+1));
        }
        return barcodeArr;
    }
    
    public static int berechneGerade(int[] arr)
    {//x2,x4,x6,x8,x10 und x12 werden addiert. 
        int sum = 0;
        for(int i = 1; i < 12; i+=2){
           sum += arr[i]; 
        }
        return sum;
    }
    
    public static int berechneUngerade(int[] arr){
        /*Dann sollen die ungraden x'zahlen 
        also x1, x3, x5 x7, x9 und x11 addiert und mit 3 multipliziert werden.*/
        int sum = 0;
        for(int i = 0; i < 11; i+=2){
           sum += arr[i]; 
        }
        return sum * 3;
    }
    
    public static int berechnePruefsumme(int a, int b){/*Dann werden die beiden Ergebnisse addiert und mit mod10 geteilt.*/
        int sum;
        sum = (a+b)%10;
        return sum;
    }
    
    public static boolean checkBarcode(int a, int[] arr){
        /*das ergebmis was man dann bekommt soll x13 sein. Die check digit.*/   
        boolean checkOK = false;
        if(a == arr[12]){
            checkOK = true;
        }
        return checkOK;
    }
}

Einfach nach Aufforderung 13-stelligen Barcode eingeben!

Barcodebeispiele:
2957810335799 --> OK
2957810335795 --> nicht OK
 

Kiri

Bekanntes Mitglied
Habe noch ne Kleinigkeit geändert, damit falsche Benutzereingaben abgefangen werden!

Java:
import java.util.Scanner;

public class Barcode {
    public static void main (String [] args){
        int sumGerade, sumUngerade, ergPruefsumme;
        String barcode;
        boolean checkOK = false;
        int[] barcodeArr;
        barcode = eingabe();
        barcodeArr = setBarcodeArr(barcode);
        sumGerade = berechneGerade(barcodeArr);
        sumUngerade = berechneUngerade(barcodeArr);
        ergPruefsumme = berechnePruefsumme(sumGerade, sumUngerade);
        checkOK = checkBarcode(ergPruefsumme, barcodeArr);
        ausgabe(checkOK);
    }
    
    public static String eingabe(){
        String barcode = "";
        boolean eingabe13 = false;
        Scanner klavye = new Scanner(System.in);
        while(!eingabe13){
            System.out.println("Bitte geben Sie einen 13-stelligen Barcode ein:");
            barcode = klavye.next();
            if(barcode.length() == 13){
                try{
                long a = Long.parseLong(barcode);
                eingabe13 = true;
                }catch(Exception e){
                    System.out.println("Deine Eingabe (" + barcode + ") enthält nicht nur Ziffern!");
                }
            }else{
                System.out.println("Deine Eingabe (" + barcode + ") besteht nicht aus 13 Ziffern!");
            }
        }
        return barcode;
    }
    
    public static int[] setBarcodeArr(String barcode){
        int[] barcodeArr = new int[13];
        for(int i = 0; i < 13; i++){
            barcodeArr[i] = Integer.parseInt(barcode.substring(i, i+1));
        }
        return barcodeArr;
    }
    
    public static int berechneGerade(int[] arr)
    {//x2,x4,x6,x8,x10 und x12 werden addiert. 
        int sum = 0;
        for(int i = 1; i < 12; i+=2){
           sum += arr[i]; 
        }
        return sum;
    }
    
    public static int berechneUngerade(int[] arr){
        /*Dann sollen die ungraden x'zahlen 
        also x1, x3, x5 x7, x9 und x11 addiert und mit 3 multipliziert werden.*/
        int sum = 0;
        for(int i = 0; i < 11; i+=2){
           sum += arr[i]; 
        }
        return sum * 3;
    }
    
    public static int berechnePruefsumme(int a, int b){//Dann werden die beiden Ergebnisse addiert und mit mod10 geteilt.
        int sum;
        sum = (a+b)%10;
        return sum;
    }
    
    public static boolean checkBarcode(int a, int[] arr){
        //das ergebmis was man dann bekommt soll x13 sein. Die check digit.   
        boolean checkOK = false;
        if(a == arr[12]){
            checkOK = true;
        }
        return checkOK;
    }
    
    public static void ausgabe(boolean check){
        if(check){
            System.out.println("Der Barcode ist OK!");
        }else{
            System.out.println("Der Barcode ist falsch!");
        }
    }
}

Barcodebeispiele:
2957810335799 --> OK
2957810335795 --> nicht OK
 

Neue Themen


Oben