Java swing Hjälp med att räkna ord.

Permalänk
Medlem

Java swing Hjälp med att räkna ord.

Hej nu är det så att jag är en total nybörjare när det gäller allt som har med programmering o göra, kan i princip bara grunderna och även dom är ganska skakiga för mig.

Just nu håller jag på att bli galen över en simpel övnings uppgift där jag ska skapa en loop där man får skriva in olika texter om och om igen för att sedan bryta loopen och då ska en ruta berätta vilken text som var längst och hur lång
den texten var.

allting är grönt för mig fram tills jag ska få programmet att hitta den längsta texten som skrevs in. Så fram tills dess har jag fått fram detta:

import javax.swing.*; public class SimpelOvning { public static void main(String[] arg) { while (true) { String Texten; Texten = JOptionPane.showInputDialog("skriv en text här avsluta med tja då"); if (Texten.equalsIgnoreCase("tja då")) break; } } }

sen har jag faktiskt ingen aning om resten, försökte använda mig av length så att den skulle räkna det ordet man skrev in men det slutade bara med att den räknade ordet tja då som då visar sex bokstäver :S.

Letat i alla möjliga tutorials om just detta men utan framgång så jag bestämde mig för att skapa denna tråd

Permalänk
Medlem

I varje iteration av while-loopen så skapar du en ny sträng, tilldelar den vad användaren skriver in, och kollar om den är lika med "tja då". Texten-variabeln försvinner så fort du avslutar den aktuella iterationen, så du sparar ju aldrig texten som skrivs in. Om du vill kunna skriva ut den längsta strängen som skrivits in så får du antingen spara alla strängar som skrivs in och gå igenom dem efteråt, eller så räcker det ju i det här fallet att bara spara den längsta strängen som hittills skrivits in. Mitt tips är att göra båda alternativen, de lär ut olika men viktiga tekniker

Permalänk
Medlem

Det du ser ut att behöva är att först tänka igenom lite vad som egentligen ska hända. Det kallas psuedo-kod att programmera i tankar. Det kan, på en nivå för nybörjare, se ut såhär:

så länge (den text man skrev in inte är tom){ räkna hur många tecken som skrevs in; om (detta var det högsta antalet tecken hittills){ lagra det nya högsta antalet tecken; } låt användaren skriva in en ny text; }

Permalänk
Medlem

Nä fortfarande lika hopplöst, försökte med att spara värdet på den längsta texten med en int variabel som jag sedan skulle jämföra med en annan int variabel som då alltid skulle vara ett tal större.

Men detta fungerade ju självklart inte så nu är jag tillbaka på ruta ett. finns det något simpelt sätt att spara de texterna som skrivs in i while satsens inputDialog?

Är jag överhuvudet taget på rätt spår? Detta är vad jag åstadkommit:

import javax.swing.*; public class SimpelOvning { public static void main(String[] arg) { String Texten; int sparad, jämförelse; jämförelse = 0; while (true) { Texten = JOptionPane.showInputDialog("skriv en text här avsluta med tja då"); sparad = Texten.length(); jämförelse = jämförelse + sparad; if (Texten.equalsIgnoreCase("tja då")) break; } if (sparad < jämförelse) JOptionPane.showMessageDialog(null, "den var längst"); } }

Vet att det inte fungerar och vet att det var en ganska idiotisk ide men jag är helt ny till detta som sagt.

Permalänk
Medlem

Nej jag tror detta är för avancerat för mig ger nog upp men tack för hjälpen ändå.

Permalänk
Medlem

Tar från huvudet bara, ej testat:

public class SimpelOvning { public static void main(String[] arg) { String Texten; int längstaText = 0; while (true) { Texten = JOptionPane.showInputDialog("Skriv en text här"); if (Texten.equals("")) break; // inget skrevs in - avsluta if (längstaText < Texten.length()) längstaText = Texten.length(); } JOptionPane.showMessageDialog(null, "Längsta ordet: " + längstaText); } }

Permalänk
Medlem

Det funka tusen tack! Var ju själv inne på dom spåren, nu gäller det bara för mig att förstå allt. Är det någon som kan tipsa om en bra toturial på internet eller kanske en bok man kan låna vore underbart.

Permalänk
Medlem

är det helt omöjligt att göra så att ordet syns istället för dess längd?
Tror jag ska försöka ta mig an det som min nästa utmaning eller är det way to hard

Permalänk
Medlem

Nej prova det! Just nu sparas bara längden av ordet, spara även själva ordet (Texten) till en variabel. Simsalabim

En till ledtråd:

if (längstaText < Texten.length()) { längstaText = Texten.length(); // här ska du göra något... tänk efter lite! }

Permalänk
Medlem

public static void main(String[] arg) { String Texten, sparad; int längstaTexten; längstaTexten = 0; sparad = ""; while (true) { Texten = JOptionPane.showInputDialog("skriv här"); if (Texten.equals("tja då")) break; if (längstaTexten < Texten.length()) längstaTexten = Texten.length(); sparad = Texten; } JOptionPane.showMessageDialog(null, "Längsta ordet: " + längstaTexten + " Det var " + sparad); } }

Obs såg nu att detta inte funka då den endast visar det senast skrivna ordet, men antar att jag är på rätt spår endå

Permalänk
Medlem

yes nu fixade jag det på riktigt! if satsen skulle se ut så här:

if (längstaTexten <= Texten.length())
sparad = Texten;

Permalänk
Medlem

Du glömmer bara måsvingarna. När det bara är en rad efter en if-sats går det bra att utelämna måsvingar, men när det är flera rader måste de till.

Alltså:

if (längstaTexten < Texten.length()) { längstaTexten = Texten.length(); sparad = Texten; }

Permalänk
Medlem

Om man väljer att spara texten så är det meningslöst att spara längden på texten då den kan nås via lenght()

Permalänk
Citat:

Ursprungligen inskrivet av Tino
Om man väljer att spara texten så är det meningslöst att spara längden på texten då den kan nås via lenght()

Hur har du då tänkt att veta vilken inmatad text det är som är längst?

Visa signatur

Keytronic for keyboard!
Sanningen måste döljas!

Permalänk
Hedersmedlem

*code-taggar fixade*

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av Random-person
Hur har du då tänkt att veta vilken inmatad text det är som är längst?

Jämföra med .length() från den sparade texten.

if (längstaTexten.length() < Texten.length())

längstatexten ska vara en String som innan loopen initieras till en tom sträng.

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG