Help

Status
Nicht offen für weitere Antworten.

Schocksen

Mitglied
Hey Leute,
ich hab hier gleich mehrere Fragen zu 2 Prüfungsaufgaben von mir.

1.
Java:
public class A {
public static boolean f(int[] x) {
int b = x.length / 2;
int i = 0;
while(i<b){
if(x[i] != x[i+b]){
return false;
}else{
return true;
}
i++;
}

public static void main(String[] args) {
int x1[] = {1,2,3,1,2,3};
System.out.println(f(x1));
int x2[] = {1,2,1,2,1,2};
System.out.println(f(x2));
int x3[] = {3,3,3,3};
System.out.println(f(x3));
int x4[] = {3,3,3};
System.out.println(f(x4));
}
}
Ich will dass mein Programm (am Beispiel vom array x1) dass erste mit dem vierten vergleicht und ausgibt, dass zweite mit dem 5. und so weiter.
Meine Lösung oben funzt irgendwie nicht so ganz, komm leider da nicht weiter.

Dann Nummer 2:


Java:
public class A {
public int x;
public A z;
public void f() {
System.out.println(x);
if (x<3)
z.f();
}
}
public class B {
public static A g(int x1, int x2) {
A a1 = new A();
a1.x = x1;
A a2 = new A();
a2.x = x2;
a1.z = a2;
a2.z = a1;
return a1;
}
public static void main(String[] args) {
A p = g(0,5);
p.f();
System.out.println("---");
p = g(2,1);
p.f();
}
}
Was ist in Klasse A zum Beispiel public A z;
Es ist ja keine Klasse, keine Methode und eine Variable mit A gibts jawohl auch nicht?

Genauso verwirrend ist für mich in Klasse B die Methode public static A g(int x1, int x2)
Wieso A g? Kann eine Methode 2 Namen haben, oder ist der Methodenname einfach A leerzeichen g? Leerzeichen darf man doch gar nicht benutzen oder täusche ich mich da?
In der main Methode dann genauso, erst:
A p = g(0 , 5) --> darauf wird dann p.f();aufgerufen, und weiter unten dann dass gleiche ohne A, also nur:
p = g(2,1);
p.f();

Wieso also einmal mit A und einmal ohne, aber dafür 2mal der gleiche aufruf von f auf p, und woher weiß der Compiler welches p.f() zu welcher Methode gehört.

Häng da echt fest weil ich die Namensgebungen in der zweiten Aufgabe auf keinem Auge blicke.
Könnte es ja einfach in Eclipse reinkopieren und ausgeben, aber in meine Prüfng in 2 Wochen werd ich das alles per Hand auf nem Blatt Papier machen müssen, von demher wäre dass ganz gut wenn ich sowas wüsste.

Ich hoffe ihr könnt mir da helfen.

Viele Grüße
Schocksen
 

Localtime

Mitglied
Hi Schocksen,

zu Nr. 1:

Java:
public static boolean f(int[] x, int schrittweite) {
		
    // Anzahl Elemente muß gerade sein!
    if(x.length % 2 != 0) {
        return false;
    }
		
    for(int zaehler = 0; zaehler < x.length; zaehler++) {
        // fertig
        if((zaehler * 2) == x.length) {
            return true;
        }
		
        // Schrittweite zu groß
        if((zaehler + schrittweite) > (x.length - 1)) {
            return false;
        }
			
        // Inhalts-Vergleich
        if(x[zaehler] != x[zaehler + schrittweite]) {
            return false;
        }
    }
    return false; // wenn das Programm hierher kommt, stimmt was nicht!
}

public static void main(String[] args) {

    int schrittweite = 3;
		
    int x1[] = {1,2,3,1,2,3};
    System.out.println(f(x1, schrittweite));
    int x2[] = {1,2,1,2,1,2};
    System.out.println(f(x2, schrittweite));
    int x3[] = {3,3,3,3};
    System.out.println(f(x3, schrittweite));
    int x4[] = {3,3,3};
    System.out.println(f(x4, schrittweite));
}

Gruß Localtime

P.S.: hatte Formatierung-Fehler ;^)
 
Zuletzt bearbeitet:

Localtime

Mitglied
zu Nr.2

Das hier alles zu erklären ist mir zu aufwendig. Da fehlen Dir einfach die Grundlagen Objekt Orientierte Programmierung (OOP).

Du solltest mal Grundlagen Objekte, Klassen, Methoden ... usw. durcharbeiten.
Hier ein Link, wo es gut mit Beispielen erklärt wird: Galileo Openbook

Gruß Localtime
 

Schocksen

Mitglied
Hmm ich versteh nicht so ganz was du da gemacht hast.
Also ich hatte folgende Aufgabe.

Was ist die Ausgabe:

Java:
public class A {
public static boolean f(int[] x) {
int b = x.length / 2;
for (int i=0; i<b; i++)
if (x[i] != x[i+b])
return false;
return true;
}
public static void main(String[] args) {
int x1[] = {1,2,3,1,2,3};
System.out.println(f(x1));
int x2[] = {1,2,1,2,1,2};
System.out.println(f(x2));
int x3[] = {3,3,3,3};
System.out.println(f(x3));
int x4[] = {3,3,3};
System.out.println(f(x4));
}
}

Da ich der Annahme war ich vergleiche x mit x[i+b], und i sich immer hochzählt bin ich auf die unten stehende Lösung gekommen.
Also als ersten x[0] mit x[3] dann x[1] mit x[4] usw.

true true true
false false false
true true
true

Nach dem kompilieren hab ich dann gemerkt dass der Zähler wohl nicht hochzähl, und die Ausgabe folgende ist:

true
false
true
true

So, und um jetzt Java mal etwas besser zu verstehen dachte ich mir ich schreib einfach mal ein Programm dass die von mir als erstes gedachte Aufgabe ausgibt, allerdings ohne Erfolg, und deine gepostete Lösung ist da auch nicht dass was ich mir gedacht hatte.

Wäre echt nett wenn mir da jemand meine Fragen beantworten könnte, auch zu der 2. Aufgabe die ich in mienem ersten Post gestellt hatte.
Hab in 2 Wochen Prüfung und komm hier einfach nicht klar, falls ich die nicht besteh bin ich weg vonner Uni, wäre also äußerst dankbar für jede Hilfe.

Achja und wenn vlt. noch jemand ne Seite kennt auf welcher Codes mit ner genauen Beschreibung was gerade im programm passiert stehen wäre auch genial(Hab schon Java von Kopf bis uß durch, kenne also eigtl. die Grundlagen, aber brauche endlich mal Beispiele mit Lösungen dazu). Bin grad im Praxissemester und hab extra 2 Wochen Urlaub genommen um dasss hier reinzurkiegen, bin also für jede Hilfe und Materialen dankbar.
 
Zuletzt bearbeitet:

Localtime

Mitglied
Hi,

also Dein Ergebnis:

true true true
false false false
true true
true

kann nicht stimmen da:

1.) x3 nur 4 Elemente hat. Es gibt somit nur 1 x true rauskommen kann.
Vergleich x[1] mit x[4] funktioniert nicht, da bei x[3] Ende ist!

2.) x4 gibt kein Ergebnis. Wie bei 1.)
Erster Vergleich wäre x[0] mit x[3] ... Ende bei Element 4 --> x[2]

Hier jetzt das Script nachdem ich auch verstanden habe, wie Du das Ergebnis haben willst (wobei mir immer unklar sein wird, wie Du mit Deinem Script als Ergebnis mehrere boolsche Werte anzeigen willst):

Java:
public static String f(int[] x, int schrittweite) {
        
    String result = "";
		
    for(int zaehler = 0; zaehler < x.length; zaehler++) {
			
        // fertig
        if((zaehler + schrittweite + 1) > x.length) {
            break;
        }
			
        if(x[zaehler] == x[zaehler + schrittweite]) {
            result += "true ";
        }
        else {
            result += "false ";
        }

        return result;
    }
}
 
public static void main(String[] args) {
 
    int schrittweite = 3;
        
    int x1[] = {1,2,3,1,2,3};
    System.out.println(f(x1, schrittweite));
    int x2[] = {1,2,1,2,1,2};
    System.out.println(f(x2, schrittweite));
    int x3[] = {3,3,3,3};
    System.out.println(f(x3, schrittweite));
    int x4[] = {3,3,3};
    System.out.println(f(x4, schrittweite));
}
 
Zuletzt bearbeitet:

Paddelpirat

Bekanntes Mitglied
Hi,

zu deiner ersten Frage:

Mit dem Code System.out.println(f(x1)); gibst du nur das Ergebnis der Methode "f" für das Array "x1" aus. Das ist auch soweit korrekt.

Wenn du die Zwischenschritte ausgeben möchtest musst du in der Methode "f" z.B. einen boolean isSymmetric = true setzen und diesen in der for-Schleife auf false setzen, falls x != x[i+b] erfüllt ist. Außerdem müsstest du in jedem Schritt x != x[i+b] mit einem System.out.println() ausgeben.

z.B. so:

Java:
public static boolean f(int[] x) {
	boolean isSymmetric = true;
	boolean isEqual;
	int b = x.length / 2;
		
		
		
	for (int i=0; i<b; i++) {
		isEqual = x[i] == x[i+b];
			
		System.out.print(isEqual + " ");
		if(!isEqual) isSymmetric = false;
	}
		
	return isSymmetric;
}

Zu deiner zweiten Frage:

public A z; //dies ist eine Instanz der Klasse "A" mit Namen "z"

public static A g(int x1, int x2) //dies ist eine statische Methode mit Namen "g", deren Rückgabewert vom Typen (also der Klasse) A ist.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Erste Schritte Help with websocket protocol implementation Java Basics - Anfänger-Themen 5
K need help doing Eratosthenes siev Java Basics - Anfänger-Themen 3
F Need Help mit String :/ Java Basics - Anfänger-Themen 8
Z User/passwort eingabe...Help! Java Basics - Anfänger-Themen 4
1 Mein erstes Programm, HELP!! Java Basics - Anfänger-Themen 2
E string.match[regex] - Help ! Java Basics - Anfänger-Themen 2
A Frame schließen!? Help! Java Basics - Anfänger-Themen 5
Screen Ein logischer Fehler im Code, Help pls Java Basics - Anfänger-Themen 6
M ArrayQueue need HELP! Java Basics - Anfänger-Themen 5
Developer_X !!!Help with Applets!!! PLEASE Java Basics - Anfänger-Themen 14
D ZweiWoerter.java HELP ! Java Basics - Anfänger-Themen 8
I Selection-Sort // Array *help* Java Basics - Anfänger-Themen 2
M Java Schleife Help plz! Java Basics - Anfänger-Themen 12
M Help! ActionEvent bei Button Klick Java Basics - Anfänger-Themen 9
R FileInputStream.read() != FileReader.read(). Pls Help Java Basics - Anfänger-Themen 5
D Wert muss sich pro sek ändern aber wie? HELP! Java Basics - Anfänger-Themen 9
T Help! Kann Bilder nach Packen in ein jar-File nimmer finden! Java Basics - Anfänger-Themen 17
N need help in panel Java Basics - Anfänger-Themen 8
N Finde Fehler nicht! Help plz! Java Basics - Anfänger-Themen 3
S call by reference vs. call by value - pls help Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben