Methoden zu gegebenem main herausfinden

  • Themenstarter Themenstarter Juliewinters
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
J

Juliewinters

Gast
Hallo

Ich habe 2 Übungen, bei denen ich nicht weiter komme und hoffe, hier kann mir jemand helfen.

Es geht darum, dass ein Teil des Codes gegeben ist und die Methode herausgefunden werden soll:

1. Aufgabe:
Folgender Code ist gegeben:

Code:
public static void main (String[] args)
{
    String s = Addiere(2,5);
    System.out.println(s);
}

Die Methode Addiere soll nun herausgefunden werden. Hat mir da jemand ne Lösung?


2. Aufgabe:
Folgender Code ist gegeben:

Code:
public static void main (String[] args)
{
    String s = "hello world";
    System.out.println(s);
    int i = StdInput.readInt("Zeige das Zeichen an Position: ");
    char c = returnChar(s,i);
    System.out.println("Das " +i+ ". Zeichen von \"" +s+ "\" ist \"" +c+ "\"");
}

Die Methode returnChar soll herausgefunden werden.


Wäre seeeeeehr froh, wenn mir jemand helfen kann!!!
 
jo also ich weis die antworten :lol:
und ich würde dir auch gern helfen, wenn du mal sagen könntest wo genau es hakt.
 
Bedeutet "Die Methode xxx soll herausgefunden werden", dass der Code für diese Methode angegeben werden soll? Wenn es keine weiteren Randbedingungen gibt, dann ist jede Antwort richtig. Wenn man zumindest die Randbedingung annimmt, dass der Code übersetzbar wird, dann müssen die jeweils gefragten Methoden zumindest die im Code verwendeten Signatur ( = Namen + Parameterlisten haben). Und wenn man dann noch etwas gesunden Menschenverstand dazunimmt, dann kann man davon ausgehen, dass die Methode Addiere (übrigens schlechter Stil; Methoden sollen klein geschrieben werden) wohl zwei int-Paramter erwartet, diese addiert und das Ergebnis als String zurückliefert; die Methode returnChar erwartet wohl einen String und einen int und soll - so sagt es zumindest die Ausgabe im Code - aus dem übergebenen String das Zeichen an der durch den übergebenen int bezeichneten Stelle liefern - auch eine durchaus lösbare Aufgabe, besonders, wenn man sich in der API-Doku mal java.lang.String.charAt ansieht.
 
@Lulumann6: Eben bei den Antworten hakt es ;-) Ich bin einfach nicht auf eine richtige Lösung gekommen, sprich, ich habe die Methode nicht herausfinden können. Bin kein Freund von Strings...

@Murray: Ja, die Ausgabe ist gegeben und eben das main-Programm. Die Aufgabe ist, die Methode, also den Code für die Methode herauszufinden. Übrigens, die Methode habe ich nicht benannt, war mein Lehrer ;-) und der ist eig. sehr kompetent. Klar, ist es eine lösbare Aufgabe, nur eben gerade für mich nicht... würde ja wohl sonst kaum hier fragen und ich hab es ja bereits versucht....

@blackMamba: Besten Dank. Funktioniert allerdings nicht ganz, es meldet, dass int nicht in String gewandelt werden kann. Genau da habe ich eben auch das Problem, dass das ganze über einen String läuft.. :S
 
public static String Addiere(int x, int y){
int summe = x + y;
return "" + summe;
}
Code:
 
Damit die main-Methode übersetzbar ist, muss die Methode Addiere einen String zurückliefern. Da die Addition der beiden ints erstmal wieder einen int ergibt, brauchst Du also einen Weg, einen int in einen String zu wandeln. In der API-Dokumentation zu java.lang.Integer findest Du, was Du brauchst:
javadoc hat gesagt.:
Code:
static String toString(int i)
          Returns a String object representing the specified integer.
 
Helper hat gesagt.:
Code:
   int summe = x + y; 
   return "" + summe; 
}
Das funktioniert zwar; man sollte sich das aber besser nicht angewöhnen, denn dabei macht man eine String-Konkatenation, die zwar mittlerweile vom Compiler recht gut optimiert wird, aber trotzdem zur Laufzeit einen gewissen Mehraufwand verursacht.
 
@Helper: Besten Dank! Musste es noch ein bisschen anpassen, aber die erste Aufgabe wäre somit gelöst :-D
 
Mein Code sieht bis jetzt so aus:

Code:
public static char returnChar(String s, int i)
	{
		s = "hello world";
		char zeichen = ???????;
		return zeichen;
		
	}

Bei den Fragenzeichen weiss ich nicht, was ich genau hinschreiben muss, zeigt bei mir alles falsch an *gg*
 
s = "hello world";
ist falsch,
der String s wird doch von außen übergeben und hat schon einen Wert

wenn du die Operation nicht kennst, die dir einen bestimmten char aus dem String gibt,
dann schaue dir am besten mal alle Operationen von String an:
http://java.sun.com/javase/6/docs/api/java/lang/String.html

insgesamt muss ich aber sagen, dass ich selten einen traurigeren Thread als diesen gesehen haben,
nicht mal zwei Zahlen addieren, keine Ahnung von nix,
uiuiui
 
1. Du darfst s in der Methode nicht neu zuweisen; hier soll der übergebene Wert verwendet werden
2. Ich hatte gestern schon einen Hinweis auf die hier passende Methode aus java.lang.String gepostet -> String.charAt
 
Murray hat gesagt.:
1. Du darfst s in der Methode nicht neu zuweisen; hier soll der übergebene Wert verwendet werden
.

Aha! Und woher hast du diese Erkenntnis? Aus der Aufgabenstellung sicher nicht! :shock:

Sorry, aber eine derartige Aufgabenstellung ist totaler Bullshit
 
@ Juliewinters

Code:
public static char getChar(String s, int i)
{
   char[] hilf = s.toCharArray(); 
   return hilf[i];
}
 
@Leroy42
nana, das ist doch wohl sehr deutlich aus der Aufgabe zu lesen,
wenn man nicht terroristisch annimmt, dass bei Addiere(2,5) genausogut 499 zurückgegeben werden soll,

warum diese Zweifel? 😉
 
SlaterB hat gesagt.:
@Leroy42
nana, das ist doch wohl sehr deutlich aus der Aufgabe zu lesen,
wenn man nicht terroristisch annimmt, dass bei Addiere(2,5) genausogut 499 zurückgegeben werden soll

Und wer sagt, daß Addiere(2,5) nicht ein Drittel der Festplatte löschen,
das Internet auf den Monitor ausgeben und "42" zurückgeben soll? :shock:

Ich bleib' dabei: Eine derartige Aufgabenstellung ist Bullshit!
 
Sorry, mein Fehler, hatte es ausprobiert und vergessen wieder zu löschen *ggg*.

also mit dem Code:
Code:
public static char returnChar(String s, int i) 
   { 
      char zeichen = s.charAt(i);
      return zeichen; 
       
   }
funktioniert es. Musste einfach noch s.charAt(i-1) anpassen, damit es nicht bei 0 beginnt zu zählen, rsp. am Ende einfach das vorangehende Zeichen nimmt.

Besten Dank an alle!!

PS: Für die Aufgabenstellung kann ich nichts. Mache eine Informatik-Lehre, aber weiss jetz nicht, ob die Aufgaben vom Lehrer selbst kommen oder von der Schule... Finde die Aufgabenstellung eigentlich noch ganz interessant.
 
Leroy42 hat gesagt.:
Aha! Und woher hast du diese Erkenntnis? Aus der Aufgabenstellung sicher nicht! :shock:

In der Aufgabe war je folgender Code gegeben:
Code:
    char c = returnChar(s,i);
    System.out.println("Das " +i+ ". Zeichen von \"" +s+ "\" ist \"" +c+ "\"");

Und wie ich weiter oben geschrieben habe, muss man, um die Aufgabe lösen zu können, wohl annehmen, dass die Methode das machen soll, was in der println-Anweisung ausgesagt wird.
 
Murray hat gesagt.:
...muss man, um die Aufgabe lösen zu können, wohl annehmen, dass die Methode das machen soll, was in der println-Anweisung ausgesagt wird.

Genau! Und eine Annahme machen zu müssen, hat in einer Programmier-Aufgabenstellung
nichts zu suchen! :noe:

Wir sind hier nicht in der Rubrik: Überlegen Sie, was sich der Autor dabei dachte...
 
wir sind hier in der rubrik "schulaufgabe" und nicht "pflichtenheft". schüler sollen etwas lernen. uneindeutige aufgaben sind ein guter weg, um schüler zum nachdenken anzuregen. es gibt für die aufgabe diverse lösungen, die alle korrekt sind. und der lehrer kann anhand der gewählten lösung und der gelieferten begründung sehr gut erkennen, welche gedankengänge der schüler verfolgt hat. möglicherweise wird es ihm auch sauer aufstossen, wenn alle seine schüler davon ausgegangen sind, dass die aufgabe eindeutig ist und nur den einen hervorheben, der tatsächlich in der methode Addiere die festplatte gelöscht hat 😉
 
@Leroy:

Ich bin ganz Deiner Meinung, die Aufgabenstellung ist nicht überzeugend; ob es Juliewinters aber auf lange Sicht viel bringen würde, die Aufgabe mit "unlösbar, da nicht eindeutig definiert"zu beantworten, wage ich zu bezweifeln. Insofern halte ich es für durchaus vertretbar, solche Annahmen zu treffen; das darf man natürlich auch gern in der Lösung erwähnen.
 
Murray hat gesagt.:
ob es Juliewinters aber auf lange Sicht viel bringen würde, die Aufgabe mit "unlösbar, da nicht eindeutig definiert"zu beantworten, wage ich zu bezweifeln.

Ich hätte das ausgefochten.

Echt schade, daß ich kein Schüler mehr bin. 🙁
😎
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben