Array Paare ausgeben

DerChris1992

Mitglied
Hallo,

Bin ein wenig am verzweifeln, deshalb brauche ich dringend einen Denkanstoß

Aufgabe ist:
Sie haben zwei Arrays int a [] und int b[]
Schreiben Sie ein JAVA Programm, das alle möglichen Paare(a, b[j])
berechnet und als Text auf der Konsole ausgibt.

Habe mir dabei folgendes gedacht:

Java:
import java.util.Scanner;  //class to read keyboard Input
import java.util.Arrays;
public class Pair_Calculation {

    public static void main(String[] args) {
        // Calculate n pairs of two arrays
        
        int [] a=new int [10];
        int [] b=new int [10];
        int [] [] ab=new int[10][10];
        
        int j=1;
        int i=1;
            for (i=1; i<a.length; i++){
            for (j=1; j<b.length; j++){
            b[j]=j+i;       
            a[i]=i; //hier weiß ich überhaupt nicht, was ich hier in der for Schleife machen soll..
            }
      
         System.out.print("Pairs:" +a[i]+""+b[j]+"");
            }
       
     }

}

Danke für eure Hilfe!
 
Hey DerChris1992,

im Grunde genommen, ist dein Ansatz schon richtig. Ich verstehe allerdings nicht, warum du die berechneten Werte noch in einem anderen Array abspeichern möchtest? In der Aufgabe steht ja nur, du sollst sie ausgeben 🙂
Wenn ich die Aufgabe richtig verstehe, sollen alle möglichen Paare miteinander addiert werden?
Und noch was: Der erste verfügbare Index in einem Array ist 0 und nicht 1 😀

grüße Fabian!
 
Hi Chris,

ich hab dir deinen Code mal ein wenig auseinander gepröselt.

Java:
 public class JavaApplication4 {
 
    public static void main(String[] args) {
        // Calculate n pairs of two arrays
 
        int [] a=new int [10];
        int [] b=new int [10];
 
        int j;
        int i;

            for (i=0; i<a.length; i++){
                a[i]=i;
            }        
 
            for (i=0; i<b.length; i++){
                b[i]=i;
            }             
            
            for (i=0; i<a.length; i++){
                
                for (j=0; j<b.length; j++){ 
                     System.out.println("Pairs: a=" +a[i]+" und b="+b[j]+" ergibt zusmmen:" + (a[i]+b[j]));
                } 
                
            }
     }
}

Tu am besten erst die Arrays mit Werten belegen und anschließen ausgeben. Bei mir funktioniert das serh schön 🙂
 
anfänger09@
In deinem Fall kann man sich die 2. For-Schleife auch sparen 🙂

Grüße Fabian!
 
Zuletzt bearbeitet:
Hallo,

erstmal Danke für die Antworten.

Habe es mal etwas umgeschrieben, da wir es "allgemein" machen sollen.
Aber irgendwas ist verkehrt...

Könnt ihr mir erklären, warum ich 2 Schleifen machen muss? Das verstehe ich noch nicht so ganz. Blutiger Anfänger 😛

Java:
import java.util.Scanner;  //class to read keyboard Input
public class Pair_Calculation {

    public static void main(String[] args) {
        // Calculate n pairs of two arrays
        
        int n_a=0;
        int n_b=0;
        int [] a=new int [n_a];
        int [] b=new int [n_b];
    
        
        Scanner sc_a=new Scanner(System.in); // method to read input of keyboard
        System.out.print("Of how many elements does array a consist? ");
        int input_a=sc_a.nextInt(); // reading input of keyboard
        n_a=input_a; // overwrite n with keyboard input
        
        Scanner sc_b=new Scanner(System.in); // method to read input of keyboard
        System.out.print("And of how many elements does array b consist? ");
        int input_b=sc_b.nextInt(); // reading input of keyboard
        n_b=input_b; // overwrite n with keyboard input
        
        if (n_b==n_a){
        int j=1;
        int i=1;
            for (i=1; i<a.length; i++){
                a[i]=i;
              }
        
            for (i=0; i<a.length; i++){
                 
                for (j=0; j<b.length; j++){ 
                     System.out.println("Pairs: " +a[i]+b[j]);
                } 
 
            }
            
            
        }
                
            
            
        
        else {
            System.out.print("Error. Array A must be consist of ");
            System.out.print("just as many elements as Array B");
            
        }
    }

}
 
Also müssen tust du erst einmal gar nichts 🙂
Es ist eine Sache des Designs, wie viele Schleifen du verwendest.

Dein gerade geposteter Code enthält mehrere Fehler und einen fatalen, den du wahrscheinlich nicht finden würdest.
Ich schreibe dir hier deswegen keinen Code, weil du das selber lernen sollst. Ich gebe dir lediglich Hilfestellung.

1. Du initialisierst die beiden Variablen, die die Größe der Arrays angeben, bereits über der Eingabe von deiner Tastatur. Das bedeutet, dass deine Arrays eine Größe von 0 haben (das Programm läuft von oben bis unten). Du darfst deine Arrays also erst instanziieren, wenn die Größe dieser bereits bekannt ist(also nach dem Einlesen von deiner Tastatur).
2. Du erzeugst 2 Scanner-Objekte. Warum? Eines reicht doch?
3. Der erste Index eines Arrays ist bei 0 ---> intArray[0]. Deine Indexvariablen j und i werden von dir mit 1 initialisiert. Damit lässt du die erste "Schublade" in deinem "Schrank" leer.
4. Dein a-Array befüllst du in der ersten For-Schleife, wo aber das b-Array?
5. In der 3 For-Schleife rufst du die Methode println mit dem Parameter "Pairs: " +a+b[j] auf. Setze um die Addition der beiden Werte aus deinen Arrays Klammern, damit Java keine Konkatenation vornimmt. Das kannst du nicht wissen und ist auch erst einmal nicht wichtig. Du musst also schreiben: "Pairs: " + (a + b[j])

Da sind noch ein paar Einzelheiten, welche ich dir im Moment aber ersparen möchte. Versuche mal diese Probleme zu lösen und schreibe dann, wenn du fertig bist 🙂

grüße Fabian!
 
Zuletzt bearbeitet:
Hey Fabian,

Danke erstmal für deinen hilfreichen Beitrag🙂

1-4. habe ich glaube ich beseitigt.
bei 5.: Ich soll die Zahlen nicht addieren, sondern zum Beispiel 11 oder 12 oder 13 oder 23 ausgeben. Heißt immer eine Zahl vom 1. Array und eine vom 2. Deshalb habe ich da das (a+b) weggelassen, weil ich die ja nicht addieren möchte.

Java:
import java.util.Scanner;  //class to read keyboard Input
public class Pair_Calculation {

    public static void main(String[] args) {
        // Calculate n pairs of two arrays
    
        int n_b=0;
        int n_a=0;
        
        
        Scanner sc_a=new Scanner(System.in); // method to read input of keyboard
        System.out.print("Of how many elements does array a consist? ");
        int input_a=sc_a.nextInt(); // reading input of keyboard
        System.out.print("And of how many elements does array b consist? ");
        int input_b=sc_a.nextInt(); // reading input of keyboard
        n_a=input_a; // overwrite n with keyboard input
        n_b=input_b; // overwrite n with keyboard input
        
        int [] a=new int [n_a];
        int [] b=new int [n_b];
    
        if (n_b==n_a){
        int j=0;
        int i=0;
            for (i=0; i<a.length; i++){
                a[i]=i;
              }
            for (i=0; i<b.length; i++){
                b[i]=i;
              }
        
            for (i=0; i<a.length; i++){
                 
                for (j=0; j<b.length; j++){ 
                     System.out.println("Pairs: " +a[i]+b[j]);
                } 
 
            }
            
            
        }
                
            
            
        
        else {
            System.out.print("Error. Array A must be consist of ");
            System.out.print("just as many elements as Array B");
            
        }
    }

}
 
Genau, das sieht schon um einiges besser aus 🙂

bei 5.: Ich soll die Zahlen nicht addieren, sondern zum Beispiel 11 oder 12 oder 13 oder 23 ausgeben. Heißt immer eine Zahl vom 1. Array und eine vom 2. Deshalb habe ich da das (a+b) weggelassen, weil ich die ja nicht addieren möchte.
Ah ok, dann habe ich das falsch verstanden 😳

Als nächstes frage ich mich, warum du für die Tastatureingabe 2 neue Variablen deklarierst?

Java:
int n_a, n_b;
n_a = sc_a.nextInt(); // reading input of keyboard for size of Array-A
n_b = sc_a.nextInt(); // reading input of keyboard for size of Array-B
Tut´s doch auch oder 😉

Dann hast du zum Befüllen der beiden Arrays jeweils eine For-Schleife verwendet. Warum befüllst du sie nicht beide in einer einzigen(die Größe der Arrays ist ja sowieso gleich).
Java:
int j=0;
int i=0;
for (i=0; i<a.length; i++){
     a[i] = i;
     b[i] = i;
}

Der Rest deines Codes erscheint mir völlig sinnig, gut gemacht 😀

grüße Fabian!
 
Zuletzt bearbeitet:
Java:
//Exercise 2

import java.util.Scanner;  //class to read keyboard Input
public class Pair_Calculation {

    public static void main(String[] args) {
        // Calculate n pairs of two arrays
    
        int n_b=0; // Array Length of b
        int n_a=0; // Array Length of a
        
        // method to read input of keyboard
        Scanner sc_a=new Scanner(System.in); 
        //Output text
        System.out.print("Of how many elements does array a consist? ");
        // reading input of keyboard
        n_a=sc_a.nextInt(); 
        //Output text
        System.out.print("And of how many elements does array b consist? "); 
        // reading input of keyboard
        n_b=sc_a.nextInt(); 
        // overwrite n with keyboard input
        // fill Array a and b with Keyboard Input
        int [] a=new int [n_a]; 
        int [] b=new int [n_b]; 
    
        if (n_b==n_a){ // Array Length of a and b has to be the same
            // control variable i and j
        int j=0; 
        int i=0; 
        // Until i is lower than Array a length do the loop, 
        //after every pass add 1 to i: i=i+1
            for (i=0; i<a.length; i++){ 
                // fill the array with numbers
                // a[] =b[] so we can fill it in one loop
                a[i]=i; 
                b[i]=i; 
            }
            
            // Until i is lower than Array a length do the loop,
            //  after every pass add 1 to i: i=i+1
            for (i=0; i<a.length; i++){
                
                // Until j is lower than Array b length  do the loop,
                //  after every pass add 1 to j: j=j+1
                for (j=0; j<b.length; j++){
                    //Output Pairs
                     System.out.println("Pair: " +a[i]+b[j]); 
            } 
            }
            
        }
        //When Array length of a and b are not the same
        else {  
            //Output text error
            System.out.print("Error. Array A must be consist of "); 
            System.out.print("just as many elements as Array B"); 
            System.exit(0);
        }
    }

}

So fertig. Nicht wundern, wir sollen alles kommentieren ;D
Danke schon mal🙂

Werde mich das Wochenende nochmal melden. Gibt noch mehr Aufgaben, bei denen ich vielleicht Hilfe brauche. Muss es ja lernen für mein Studium 😀

PS: Dein Spiel ist interessant 😀

Bis die Tage und Danke!
 
Jo, kein Thema 😀
Scheu dich nicht, mich per pn anzuschreiben, falls du nicht extra ein Thema eröffnen möchtest 😉

PS: Danke 😉

grüße Fabian!
 

Neue Themen


Zurück
Oben