Permalänk
Medlem

Java returnera inskriven text

Hej!
Har problem med denna uppgift i Java. (Jag vet att jag har postat en del programmering uppgifter senaste tiden men jag har verkligen försökt på egen hand men har ändå mycket problem, får aldrig tag på min lärare pga. att det är en omtenta och jag inte har föreläsningar med denna kursen mer, har mailat min lärare en gång tidigare angående problem i programmeringen men förstår att han självklart inte har tid för att hjälpa alla sina elever på fritiden. UPPSKATTAR därför verkligen den hjälp jag får här!)

Skriv in en metod som skall returnera en textsträng. Metoden har inga parametrar.
Metoden ska läsa in en godtycklig följd av text från tangentbordet i form av rader(där en rad avslutas med ett Return).
Inmatningen avslutats med ordet "SLUT" matas in ensamt på en rad.
Metoden skall returnera all den inmatade texten som en enda lång rad (textsträng).
dvs. inmatningen:
"HEJ"
"HOPP"
"SAN"
"SLUT"
gör att metoden returnerar strängen "HEJHOPPSAN"

Jag är helt ny inom Java, så ha gärna lite överseende och förklara gärna hjälpsamt och enkelt hur jag ska korrigera min kod.

MIN KOD HITTILLS:
import java.util.*;
public class Upg13_IS_IT_tenta {

String x, y, c, v;
public String text(){
System.out.println("skriv in första ordet");
Scanner sc = new Scanner(System.in); //KAN MAN ENS GÖRA DETTA UTANFÖR MAIN?
x = sc.next();
y = sc.next();
c = sc.next();
v = sc.next(); // i dessa tilldelar jag varje ord en string som jag sedan returnerar
// så att jag får textsträngen HEJHOPPSAN

sc.next();
sc.next();
sc.next();
sc.next(); // Här vill jag returnera all den inmatade texten som en lång rad

return x + y + c;
}
}

TACK!

Permalänk
Medlem

Nu har jag i och för sig själv aldrig rört Java, men jag förmodar att det finns någon funktion som kan lägga ihop flera strings. Antar att Scanner.next läser av en ny rad i konsolen?
Istället för att använda flera strings bör du använda dig av en enskild som fylls på allt eftersom man matar in orden. På detta sätt blir du inte begränsad till antalet ord.

Något likt detta borde väl fungera:

public string ConcatString() { userInput = sc.next(); string result = ""; while(userInput != "SLUT") { result.concat(userInput); userInput = sc.next(); } return result; }

Nu vet jag inte vad java har för funktioner, men om det inte finns någon concat kan du ju göra en egen funktion ganska lätt med arrays, fast det kanske blir ännu krångligare...
Objekt går för övrigt att skapa utanför en main funktion.

Permalänk
Medlem

Eftersom JellyCow redan gav hela svaret så gör jag det också, här i form av ett testat och fungerade program (mycket likt det svar JellyCow gav).

Försök dock fungera vad raderna gör, och vad du gjorde för fel. Märk att uppgiften lyder "en godtycklig följd av text", så du kan inte bara laga ett program som klarar av exemplet.

main-funktionen är en funktion som alla andra, med undantag av att det generellt är den som körs då man kör en Java-fil. Förutom det så går allt du kan göra i main också att göra i vilken annan klass eller funktion som helst.

import java.util.Scanner; public class Persontest { public static void main(String[] args) { String text = inputText(); System.out.println(text); } public static String inputText() { Scanner sc = new Scanner(System.in); String result = ""; String input = sc.nextLine(); while(!input.equals("SLUT")) { result += input; input = sc.nextLine(); } return result; } }

Permalänk
Skrivet av Tazavoo:

import java.util.Scanner; public class Persontest { public static void main(String[] args) { String text = inputText(); System.out.println(text); } public static String inputText() { Scanner sc = new Scanner(System.in); String result = ""; String input = sc.nextLine(); while(!input.equals("SLUT")) { result += input; input = sc.nextLine(); } return result; } }

Har precis börjat kika på Java och försökte följa ditt exempel. Föll dock på att jag använde jämförelseoperator (!=) istället för equals-metoden. Har jag förstått rätt att strängar i Java är objekt? Således kollar man huruvida det är samma objekt när man använder ==, och man bör därför använda equals-metoden för att jämföra "strängvärden"? Har viss erfarenhet av objektorienterad php men Java spelar i en helt annan liga.

Permalänk
Medlem
Skrivet av Lakritsugglan:

Har precis börjat kika på Java och försökte följa ditt exempel. Föll dock på att jag använde jämförelseoperator (!=) istället för equals-metoden. Har jag förstått rätt att strängar i Java är objekt? Således kollar man huruvida det är samma objekt när man använder ==, och man bör därför använda equals-metoden för att jämföra "strängvärden"? Har viss erfarenhet av objektorienterad php men Java spelar i en helt annan liga.

Precis så ligger det till!