Permalänk

Problem med kod. (Java)

Det som är fel i koden kommer att vara understruket.
Det jag vill göra är att programmet ska ersätta symbolen i denna strängen med ett "char" tecken som man tidigare bestämmer i programmet.

Ifall det finns nått enklare sätt att gemföra tecken i strängen så att man hittar vokalerna än så som jag gjort i if-satsen så vill jag gärna ha tips om det

Koden:
public class ö37
{
public static void main (String[] args)
{
System.out.println ("Mata in din sträng: ");
String text = Keyboard.readString();
System.out.println ("Ange ett vokal eller sifrfra (ej å, ä, ö):");
char tecken = Keyboard.readChar ();

int antal = 0;
for (int i = 0; i<text.length(); i++)
{
if (text.charAt(i) == 'a' || text.charAt(i) == 'A' ||text.charAt(i) == 'e' ||text.charAt(i) == 'E' ||text.charAt(i) == 'i' ||text.charAt(i) == 'I' ||text.charAt(i) == 'o' ||text.charAt(i) == 'O' ||text.charAt(i) == 'u' ||text.charAt(i) == 'U' ||text.charAt(i) == 'y' ||text.charAt(i) == 'Y')
{
text.charAt(i) = tecken;
}
}
System.out.println ("Din nya sträng är:\n" + text);
}
}

Permalänk
Medlem

Att döpa programmet till ö37 är ju inte så trevligt även om jag har för mig att java kan hantera det.

Visa signatur

Lian Li PC-O11 Mini || i9 10850K || MSI MEG Z490i UNIFY || EVGA RTX 3070 XC3 Ultra || 32GB G.SKILL Trident Z Neo 3600MHz CL16 || WD SN550 1TB && Samsung 970 EVO 500GB && OZC Trion 480GB || Corsair SF750 Platinum
Dell S2721DGFA|MSI MAG341CQ
BenQ W1300 | Yamaha RX-A830 | Playstation 3

Permalänk
Skrivet av ChipZ:

Att döpa programmet till ö37 är ju inte så trevligt även om jag har för mig att java kan hantera det.

Kanske inte. Men det har funkat hitills. Men ska tänka på att byta ut ö mot ett o då. Tack så mycket:P

Permalänk

En annan fråga nu
Ifall man vill lägga till en sträng mer än de man har tagit från början. Hur kodar man det?
t.ex.
String[] namn = new string[6];

Ifall man då vill ha en 7:e sträng efteråt. Hur gör man då?

Permalänk
Medlem

Kommer inte ihåg om det går, men om man använder vektorer ska den funktionen finnas.

Visa signatur

Lian Li PC-O11 Mini || i9 10850K || MSI MEG Z490i UNIFY || EVGA RTX 3070 XC3 Ultra || 32GB G.SKILL Trident Z Neo 3600MHz CL16 || WD SN550 1TB && Samsung 970 EVO 500GB && OZC Trion 480GB || Corsair SF750 Platinum
Dell S2721DGFA|MSI MAG341CQ
BenQ W1300 | Yamaha RX-A830 | Playstation 3

Permalänk
Medlem

Jag kan ingenting om java men du borde använda dig av kodformateringen när du skriver kod här

//Då ser det ut så här istället #include <iostream> int main() { std::cout << "Hello world!" << std::endl; return 0; }

Det blir lite lättare att läsa kod då

Visa signatur

¯\_(ツ)_/¯

Permalänk

Jag löste problemet med den första frågan nu. Men inte den andra.
Det går inte att redigera i en string utan bara att lägga till tecken i den.

Så man fick skapa en temp sträng och använda den för att skriva ut den nya redigerade strängen

Permalänk
Medlem

istället för den horribla if-satsen kan du använda

text.replaceAll(regex,tecken);

där regex är en Sträng som innehåller det reguljära uttrycket för de bokstäver du nämner i ifsatsen.
På så sätt slipper du både loopar och ifsatser.
Använda någon form av List istället för en array om du vill kunna lägga till och ta bort strängar enkelt.

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Skrivet av Deathdevil:

En annan fråga nu
Ifall man vill lägga till en sträng mer än de man har tagit från början. Hur kodar man det?
t.ex.
String[] namn = new string[6];

Ifall man då vill ha en 7:e sträng efteråt. Hur gör man då?

Jag hade då använt mig av någon form av lista. Sen har jag inte hundra procent koll på vilken av listorna du ska använda. Det beror lite vad du tänker göra med listan Men lite kort så fungerar det som så att om du gör t.ex. en LinkedList så kan de kortfattat se ut så här:

import java.util.LinkedList; public class Main { public static void main(String[] args) { //initierar listan "namn" av typen String LinkedList<String> namn = new LinkedList<String>(); //lägger in ny text. Här är alltså från början inget i listan, men man kan lägga in hur mycket man vill. namn.add("Hej Gösta!"); namn.add("Jag heter Bamse och bor i skogen."); namn.add("Jag tror att vi kan komma överens om Elefanterna."); namn.add("Ha en härlig fredag"); namn.add("MVH Bamse"); //slutligen använder jag mig av en enkel for-sats för att printa ut allt som står i listan for(int i = 0; i < namn.size(); i++){ System.out.println(namn.get(i)); }//end for }//end main }//end class

Dold text

Jag hoppas det hjälper har du några frågor så citera gärna mig så att jag lättare får reda på det

EDIT: Fixade CODE taggar till koden bara

Visa signatur

Chassi: Corsair Obsidian 650D Moderkort: Asus ROG Strix Z270F Gaming Processor: Intel Core i7 7700K Processorkylare: Noctua NH-D15 Grafikkort: Asus GeForce DirectCU II GTX 970 RAM-Minnen: Corsair Vengeance 16GB CL15 3000Mhz Ljudkort: Asus Xonar DX SSD: Crucial M4 256 GB Hårddisk:Western Digital Caviar Green 1TB Operativsystem: Windows 10 64-bit