ich habe drei strings dazwischen möchte ich das sich einer von den strings (um ein punkt zb) solange vergrößert bis alle strings zusammen eine bestimmte größe haben. Am ende möchte ich aber nur eine ausgabe mit allen strings zusammen und der neuen aneinander gereihten string größe aller worte/zeichen.
dabei ist zu beachten ich möchte nur eine while schleife dabei benutzen. ist das möglich?
Indem du mit einer while-Schleife einen von den strings (um ein punkt zb) solange vergrößerst bis alle strings zusammen eine bestimmte größe haben.
Danach gibst du denn die Strings zusammen aus.
ja wie das in java aussehen würde. bei mir spuckt eclipse immer fehler aus.
ich weiß nicht wie ich das machen soll. das ding ist halt ich habe drei strings und der zweite ist ein punkt und den möchte immer vergrößern bis es die gewünschte länge hat ich weiß nicht wie.
ich habe sowas gemacht:
while (wortla < 30)
{
punkt = punkt + punkt;
if (wortla <= 30)
System.out.println(wort1 + punkt + wort2);
Bitte einmal den kompletten Code Posten. Dann können wir deine Fehler ausmerzen. Wenn wir dir jetzt einfach den Code vorbeten bringt dir das langfristig nichts.
jetzt hat es geklappt ich kann es aber nicht wirklich nachvollziehen. ist die lösung gut? oder kann man es besser machen?
package chap15;
import java.util.*;
public class A3
{
public static void main(String[] args)
{
Scanner scan = new Scanner (System.in);
String wort1, wort2, punkt = ".", leer = "", zusammen;
System.out.println("Geben Sie das erste Wort ein: ");
wort1 = scan.nextLine();
System.out.println("Geben Sie das zweite Wort ein: ");
wort2 = scan.nextLine();
while (wort1.length()+ wort2.length()+ leer.length() < 30)
{
leer += punkt;
}
zusammen = wort1 + leer + wort2;
System.out.println(zusammen);
}
Man könnte die Konkatenation in der Schliefe mit einem StringBuilder ersetzen.
Zusätzlich kann man den Stil ändern - zB Variablen erst deklarieren, wenn die gebraucht werden, leer anders benenne (enthält ja schließlich was), ...
Es ist manchmal besser nur die Brocken hinzuwerfen. Die Lösung komplett zu beschreiben, hilft nicht sich mit dem Thema mehr zu beschäftigen....
Die String-Verkettung hat viele Facetten, die beachtet werden müssen. Damit kann man eine Vorlesung füllen.
Neben StringBuilder oder -Buffer exitiert auch die intern Methode mit der die Referenzen gelegt werden können, um jedes mal die Instanzierung eines neuen String-Objektes zu umgehen.
Neben StringBuilder oder -Buffer exitiert auch die intern Methode mit der die Referenzen gelegt werden können, um jedes mal die Instanzierung eines neuen String-Objektes zu umgehen.
intern hat überhaupt nichts mit Konkatenierung zu tun. Vor allem kann man erst nach der Instanzierung intern aufrufen, die Instantiierung umgeht man also nichtig, man kann nur Duplikate schneller aufräumen lassen.
.... aber ich versuche immer Ressourcen-sparend zu entwickeln.
String kann ein wirklicher Killer sein....
Auch wenn Hardware heute vielleicht nicht mehr viel zu kosten scheint, bringt uns das IoT-Zeitalter zurück zu den Anfängen, bei denen auf Speicherplatz und Datentypen geachtet werden musste.
Frag doch heute jemanden nach den Speicherverbrauch von Strings....
Na dann ist dir sicherlich bewusst, das auch intern ein ziemlicher Performance-Killer sein kann
Mein Lieblingszitat zu sowas:
Brian Goetz hat gesagt.:
Often, the way to write fast code in Java applications is to write dumb code -- code that is straightforward, clean, and follows the most obvious object-oriented principles.
Was sollte man denn einsparen? Speicherbedarf? Rechenzeit? Entwicklungsaufwand? Das eine kann kontraproduktiv für das andere sein. Also sieht man sich am besten an, welches Problem man hat, bzw. ob man überhaupt eins hat. Für die Anfrage des TE finde ich die ganz stumpfe String-Konkatenation angemessen. Und solange man damit noch Probleme hat, muß man sich mit StringBuilder noch nicht unbedingt beschäftigen.
Für die Anfrage des TE finde ich die ganz stumpfe String-Konkatenation angemessen. Und solange man damit noch Probleme hat, muß man sich mit StringBuilder noch nicht unbedingt beschäftigen.