reversera en sträng
har ett program där man ska skriva in ett ord/text.. och den ska skriva ut texten ovänt..
public static void main (String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Skriv in text med 6 skrifttecken: ");
String text = input.nextLine();
char ch[] = text.toCharArray();
for(int i = ch.length-1; i > -1; i--)
{
text += ch[i];
}
System.out.println("Din text omvänt: " + text);
}
}
men får inte till det för utskriften blir tex. om jag skriver in "hej": hejjeh
text += ch[i]; <--- problemet sitter ju här men om jag tar bort plus får jag felkod: char cannot be converted to String
hur rensar jag strängen för att endast få ut "jeh"
Till att börja med tycker jag du ska ändra rubriken. Det handlar inte om att "rensa" utan om att reversera, skriva texten baklänges / "omvänt".
Skapa en ny variabel
char[] result = "";
Byt ut
text += ch[i];
mot
result += ch[i];
samt
System.out.println("Din text omvänt: " + text);
till
System.out.println("Din text omvänt: " + result);
Prova med:
&text[length-1-i]=ch[i];
reversera! okey! tack :D hur ändrar man rubriken?
får detta felmeddelande när jag försöker skapa den nya variabeln:
error: incompatible types: String cannot be converted to char[]
char[] result="";
nutella143 skrev :får detta felmeddelande när jag försöker skapa den nya variabeln:
error: incompatible types: String cannot be converted to char[]
char[] result="";
Jag gissar att:
char [] result = new char[ch.length];
I andra sammanhang kan man väl t.ex. skriva:
String ella = "";
Prova denna kod:
public static void main (String[] args)
{
// Scanner input = new Scanner(System.in);
System.out.print("Skriv in text med 6 skrifttecken: ");
String text = "ni talar bra latin"; //input.nextLine();
String result = "";
char ch[] = text.toCharArray();
for(int i = ch.length-1; i > -1; i--)
{
result += ch[i];
}
System.out.println("Din text omvänt: " + result);
}
PeterÅ skrev :Prova denna kod:
public static void main (String[] args)
{
// Scanner input = new Scanner(System.in);System.out.print("Skriv in text med 6 skrifttecken: ");
String text = "ni talar bra latin"; //input.nextLine();
String result = "";
char ch[] = text.toCharArray();
for(int i = ch.length-1; i > -1; i--)
{
result += ch[i];
}
System.out.println("Din text omvänt: " + result);
}
I din kod kommer väl kompilatorn för "result", bara reservera utrymme för en enda byte ("")?
Jag gissar på kompileringsfel som tidigare:
error: incompatible types: String cannot be converted to char[]
char[] result="";
nutella143 skrev :reversera! okey! tack :D hur ändrar man rubriken?
Du trycker på ”redigera” i ditt huvudinlägg. Om det har gått mer än 2 timmar efter att inlägget postades så måste du kontakta en moderator för att fixa det. Jag kan ändra den åt dig!
Teraeagle skrev :nutella143 skrev :reversera! okey! tack :D hur ändrar man rubriken?
Du trycker på ”redigera” i ditt huvudinlägg. Om det har gått mer än 2 timmar efter att inlägget postades så måste du kontakta en moderator för att fixa det. Jag kan ändra den åt dig!
tack gärna! =D
Affe Jkpg skrev :I din kod kommer väl kompilatorn för "result", bara reservera utrymme för en enda byte ("")?
Jag gissar på kompileringsfel som tidigare:
error: incompatible types: String cannot be converted to char[]
char[] result="";
Nja, det sker en kopiering till en annan sträng i bakgrunden. Inte så snyggt kanske men det visar ett sätt att vända på en text. Koden fungerar i NetBeans IDE 8.2.
Tack PeterÅ!
det funkade :D
har jag förstått det rätt om jag tänker...
det man skriver in sparas i "text"
sen blir ersätts "text" med "result"..
men varför funkade det inte i mitt fall när jag: System.out.println("Din text omvänt: " + text);
I den ursprungliga koden hade du variabeln text där du hade ordet. Sedan lade du på bokstäverna i omvänd ordning på samma sträng (utan att ta bort texten som redan fanns där), vilket ledde till att du fick ursprungsordet och det omvända ordet samtidigt.
Med det nya systemet skapar du en helt tom variabel result där du sätter in bokstäverna i omvänd ordning, vilket gör att du inte får ursprungsordet i resultatet.