0 Daumen
821 Aufrufe

Code:

public class Mathe {
  public static String ausgabeVielfache(int a, int n) {
      int b = 1;
      for (b = 1; b <= n; b = b + 1) {
          System.out.println(a * b + "  ");
      }
      return "Nächste Zahl";
  }

  public static String ausgabe1x1(int n, int a) {
      int b = 1;
      a = 1;
      while (a <= n) {
          for (b = 1; b <= n; b++) {
              return a * b + "  ";
          }
          System.out.println();
      }
      return "Nächste Zahl";
  }

  public static void main(String[] args) {
      int a = 3, n = 5;
      ausgabeVielfache(a, n);
      System.out.println("Ende vielfache");
      ausgabe1x1(n, a);
  }
}


Fehleranzeige:

TestSuite.java:47: error: method ausgabe1x1 in class Mathe cannot be applied to given types;
Mathe.ausgabe1x1(5);
    ^
required: int,int
found: int
reason: actual and formal argument lists differ in length
TestSuite.java:54: error: method ausgabe1x1 in class Mathe cannot be applied to given types;
Mathe.ausgabe1x1(1);
    ^
required: int,int
found: int
reason: actual and formal argument lists differ in length
TestSuite.java:61: error: method ausgabe1x1 in class Mathe cannot be applied to given types;
Mathe.ausgabe1x1(3);
    ^
required: int,int
found: int
reason: actual and formal argument lists differ in length
3 errors
1
Files
Avatar von

1 Antwort

0 Daumen
 
Beste Antwort

Hallo! :)

Du musst die Methode mit der gleichen Anzahl an Parameter aufrufen, wie du sie definiert hast. Zum Beispiel würde folgendes in der Main-Methode funktionieren:

public class Mathe {
  //...
  public static void main(String[] args) {
      int a = 3;
int n = 5;
      ausgabeVielfache(a, n);
  }
}
Ausgabe:



12 
15
Avatar von

Wie klappt das für beliebige Zahlen also zahle x und keine besimmte Zahl...

Und ich brauche das glaube ich für die 2te Methode also für ausgabe1x1....

Du kannst ein Scanner-Objekt mit

import java.util.Scanner;

Scanner sc = new Scanner(System.in); // liest Zahl von Eingabe in der Konsole
int i = sc.nextInt(); // schreibt Wert der Eingabe in i
erstellen und damit die Benutzereingaben auslesen. Dann könntest du die vom Nutzer eingegebenen Zahlen der Funktion als Parameter übergeben. Oder aber du benutzt Math.random() für das Erstellen von Zufallszahlen.

Es tut mir leid wenn ich Sie nerve :) aber bin halt neu im Studium und weiss nicht wie ich das jetzt in meinem Programm einbaue ... also wo soll das was Sie da geschrieben haben ich einsetzen also wie siehtdas Programm dann aus?

Das ganze hat geklappt aber beim PreTest kommt da hier raus...

Porgramm ==>
import java.util.Scanner;

public class Mathe {
public static String ausgabeVielfache(int a, int n) {
int b=1;
for(b=1;b<=n;b=b+1){
System.out.println(a * b + "  ");
}
return "Nächste Zahl";
}


public static String ausgabe1x1(int n) {
int b=1;
int a=1;
Scanner sc= new Scanner(System.in);
n= sc.nextInt();
for( a=1; a<=n; a++){
for(b=1;b<=n;b = b+1){
return a*b + "  ";
}
System.out.println();
}
return "Nächste Zahl";
}

}



Fehler==>
FEHLER: zuletzt erwarteter und tatsaechlich erhaltener Wert unterscheiden sich
erwartet:
................................
"3 6 9 12 15
"
................................
erhalten:
................................
"3 


12 
15 
"
================================
TestSuite fehlgeschlagen :-(

Dann entferne System.out.println(); in deinem Code. Geht es dann?

Das ist die Fehlanzeige für ausgabeVielfach also für die 1te Methode

Dann mache aus System.out.println(a * b + "  "); eben System.out.print(a * b + "  ");

Danke für deine Antwort .. das klappt alles aber diese scheiss System will das so haben obwohkl das kein Sinn macht... wie mache ich ds jetzt?


FEHLER: zuletzt erwarteter und tatsaechlich erhaltener Wert unterscheiden sich
erwartet:
................................
"3 6 9 12 15
"
................................
erhalten:
................................
"3 6 9 12 15 "
================================
TestSuite fehlgeschlagen :-(

Nach dem letzten schleifendurchlauf musst du noch Mal einen Zeilenumbruch machen mit System.out.println(); Also vor dem return.

public static String ausgabeVielfache(int a, int n) {
int b = 1;
for(b = 1; b <= n; b = b + 1){
System.out.print(a * b + "  ");
}
System.out.println();
return "Nächste Zahl";
}

Du siehst doch an der erwarteten Ausgabe und deiner tatsächlichen Ausgabe, was du noch ändern musst. In diesem Fall siehst du, dass die Anführungszeichen an unterschiedlichen Stellen sind, d.h. es fehlt noch ein Zeilenumbruch. Das Anführungszeichen in der erwarteten Ausgabe befindet sich nämlich in der nächsten Zeile, bei dir aber nicht. Also fügst du einen Zeilenumbruch hinzu, ganz einfach.

import java.util.Scanner;

public class Mathe {
public static void ausgabeVielfache(int a, int n) {
int b=1;
for(b=1;b<=n;b=b+1){
System.out.print(a * b);
System.out.print(" ");
}
System.out.println();
}


public static void ausgabe1x1(int n) {
int b=1;
int a=1;
Scanner sc= new Scanner(System.in);
n= sc.nextInt();
for(a=1; a<=n; a++){
for(b=1;b<=n;b = b+1){
System.out.print(a*b);
System.out.print(" ");
}
System.out.println();
}
}

}

Testfall 'Mathe_ausgabeVielfache_1_A_A':
OK
Testfall 'typ_A_A':
OK
Testfall 'Mathe_ausgabe1x1_1_A_A':
Mathe.ausgabe1x1(5);
FEHLER IM GETESTETEN CODE:
java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Mathe.ausgabe1x1(Mathe.java:21)
at TestSuite.test_Mathe_ausgabe1x1_1_A_A(TestSuite.java:47)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at common.TestCase.run(TestCase.java:70)
at java.base/java.lang.Thread.run(Thread.java:834)
................................
================================
TestSuite fehlgeschlagen :-(

Mit was testest du denn die Klassen? Mit maven oder JUnit oder was?

Dann sind deine Testdateien falsch geschrieben oder Maven etc. Nicht richtig installiert.

Das Programm läuft fehlerfrei, du müsstest vielleicht Mal die Testkonfigurationen mit hinzufügen damit man dir helfen kann.

Das ist ein Porgramm von der UNI ich denke nicht das da was falsch sein sollte... ich weiss nicht bin verwirrt

Dann schick Mal den gesamten Code so wie er bei dir jetzt ist in einem Kommentar, sonst kann man nicht wirklich helfen. Und es würde helfen, wenn du sagen könntest, welches Buildsystem benutzt wird (Maven, etc.).

import java.util.Scanner;

public class Mathe {
public static void ausgabeVielfache(int a, int n) {
int b=1;
for(b=1;b<=n;b=b+1){
System.out.print(a * b);
System.out.print(" ");
}
System.out.println();
}


public static void ausgabe1x1(int n) {
int b=1;
int a=1;
Scanner sc= new Scanner(System.in);
n= sc.nextInt();
for(a=1; a<=n; a++){
for(b=1;b<=n;b = b+1){
System.out.print(a*b);
System.out.print(" ");
}
System.out.println();
}
}

}

TestSuite 'Pre':
================================
Testfall 'Mathe_ausgabeVielfache_1_A_A':
OK
Testfall 'typ_A_A':
OK
Testfall 'Mathe_ausgabe1x1_1_A_A':
Mathe.ausgabe1x1(5);
FEHLER IM GETESTETEN CODE:
java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Mathe.ausgabe1x1(Mathe.java:21)
at TestSuite.test_Mathe_ausgabe1x1_1_A_A(TestSuite.java:47)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at common.TestCase.run(TestCase.java:70)
at java.base/java.lang.Thread.run(Thread.java:834)
................................
================================
TestSuite fehlgeschlagen :-(

Anscheinend werden im Testprogramm verschiedene Parameter an die Funktion übergeben, um sie zu testen. Dann darfst du natürlich nicht den Scanner benutzen. Die Klasse erwartet ja sonst einen Input, obwohl keiner kommt. Du solltest den Scanner und die Initialisierung in die main-Methode packen, also der Teil

Scanner sc= new Scanner(System.in);
n= sc.nextInt();

kommt in die Main-Methode und in deiner Methode ausgabe1x1 löscht du das heraus.


Dann werden beim Testen der einzelnen Klassen durch die Testsuite auch die erwarteten Ergebnisse erzielt und alles sollte kompilieren.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community