Permalänk
Medlem

java - addera två strängar

har fått en programmeringsuppgift i skolan som jag inte lyckas lösa själv och med hjälp av google.

på den sista raden

return sum;

säger kompilatorn "cannot convert from int to String" - men det har jag väl redan gjort på raden ovan?

// addera tar emot två naturliga heltal givna som // teckensträngar, och returnerar deras summa som // en teckensträng. public static String addera (String tal1, String tal2) { int addTal1 = Integer.parseInt(tal1, 10); int addTal2 = Integer.parseInt(tal2, 10); int sum = addTal1 + addTal2; Integer.toString(sum); return sum; }

dessutom så undrar jag om jag kan använda mig av denna metod istället:

// namnen är endast exempel tagna från stackoverflow.com var num1 = '20', num2 = '30.5'; +num1 + +num2; // Källa: http://stackoverflow.com/questions/8976627/how-to-add-two-strings-as-if-they-were-numbers

Hur i så fall?

Tack!

Visa signatur

MODERMODEM: Asus ROG Strix Z270E Gaming | i7 7700K | Corsair Hydro H110 | Kingston HyperX Savage 32GB DDR4 RAM | Asus GeForce RTX 3060 Ti TUF OC | Crucial BX100 500GB SSD | Phanteks Enthoo EVOLV | SilverStone Strider Evolution 1200W |

Permalänk
Medlem

Ja du får return Integer.toString(sum);

Permalänk
Medlem
Skrivet av hawy:

Ja du får return Integer.toString(sum);

men det fungerar ju inte?

Visa signatur

MODERMODEM: Asus ROG Strix Z270E Gaming | i7 7700K | Corsair Hydro H110 | Kingston HyperX Savage 32GB DDR4 RAM | Asus GeForce RTX 3060 Ti TUF OC | Crucial BX100 500GB SSD | Phanteks Enthoo EVOLV | SilverStone Strider Evolution 1200W |

Permalänk

Du har inte satt " Integer.toString(sum); " till en variabel. T.ex. " sumString = Integer.toString(sum); "
Eller som hawy sade: " return Integer.toString(sum); "

Visa signatur

Hellre fråga och se dum än att inte fråga och förbli dum.

🖥️: Ryzen 9 5900x, MSI X470 GAMING PRO MAX, Gigabyte 2070,
Corsair 32GB (4x8GB) DDR4 3600MHz CL18, Fractal Design R5, 2x 1080p 1x 1440p

Permalänk
Medlem

EDIT: hann inte först, se ovan

Lite mer utförligt:

Felmeddelandet, cannot convert to string löses på det här viset:
Eftersom sum på rad (3) är en int kan denna inte returneras på rad (5) då konstruktorn definerar att en String ska returneras

// addera tar emot två naturliga heltal givna som // teckensträngar, och returnerar deras summa som // en teckensträng. public static String addera (String tal1, String tal2) { int addTal1 = Integer.parseInt(tal1, 10); int addTal2 = Integer.parseInt(tal2, 10); (3) int sum = addTal1 + addTal2; (4) Integer.toString(sum); (5) return sum; // returnera istället genom följande kommando: // return Integer.toString(sum); // funktionen Integer.toString(int x), retunrerar en sträng. Denna kan sedan returneras i sin tur. }

Vet inte vad du menade med raderna under då dessa inte är java, utan javascript som andra nämnt här i tråden.

Visa signatur
Permalänk
Medlem
Skrivet av morxy49:

dessutom så undrar jag om jag kan använda mig av denna metod istället:

// namnen är endast exempel tagna från stackoverflow.com var num1 = '20', num2 = '30.5'; +num1 + +num2; // Källa: http://stackoverflow.com/questions/8976627/how-to-add-two-strings-as-if-they-were-numbers

Hur i så fall?

Det fungerar i JavaScript, inte i Java.

Och toString borde fungera, vad får du för fel?
Annars ska man kunna göra såhär, även om det kanske inte är särskilt snyggt:

return ""+sum;

Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk
Hedersmedlem

Ser att andra redan har svarat under tiden jag hade frågan uppe i webbläsaren, men det skadar kanske inte att läsa samma sak, fast upplagt på ett lite annat sätt .

Skrivet av morxy49:

int sum = addTal1 + addTal2; Integer.toString(sum); return sum;

`Integer.toString(sum);` är en klassmetod som tillhör klassen `Integer` som gör om `sum` från en `int` till en sträng — och returnerar detta. Det modifierar inte själva `sum`-variabeln, utan bara utför konverteringen och skickar tillbaka värdet till där du kallade metoden — men du "fångar" inte detta på något sätt, så i praktiken gör raden ingenting i din kod (eller ja, den hade gett dig ett felmeddelande om `sum` inte varit en `int`).

Antingen får du sätta detta returvärde till något som du sedan returnerar i din funktion, eller så kan du returnera detta värde direkt, vilket är mer naturligt.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Inaktiv

Det andra du pratar om är JavaScript, det fungerar inte lika dant som Java.

Permalänk
Medlem
Skrivet av hawy:

Ja du får return Integer.toString(sum);

Skrivet av Webpiraten:

Du har inte satt " Integer.toString(sum); " till en variabel. T.ex. " sumString = Integer.toString(sum); "
Eller som hawy sade: " return Integer.toString(sum); "

jaha, var det så du menade nu fungerade det! tack

men något som är skumt är att jag fick precis tips om att det står en liknande uppgift i boken vi har, och där verkar det som att dom har gjort ett gigantiskt kodstycke som adderar alla siffror var för sig och har en variabel för "minne" - precis som när man ställer upp ett tal med penna och papper.

kan någon förstå varför man skulle vilja göra på detta sätt? står ingenting om att man ska göra så i beskrivningen till uppgiften.

Visa signatur

MODERMODEM: Asus ROG Strix Z270E Gaming | i7 7700K | Corsair Hydro H110 | Kingston HyperX Savage 32GB DDR4 RAM | Asus GeForce RTX 3060 Ti TUF OC | Crucial BX100 500GB SSD | Phanteks Enthoo EVOLV | SilverStone Strider Evolution 1200W |

Permalänk
Inaktiv
Skrivet av morxy49:

jaha, var det så du menade nu fungerade det! tack

men något som är skumt är att jag fick precis tips om att det står en liknande uppgift i boken vi har, och där verkar det som att dom har gjort ett gigantiskt kodstycke som adderar alla siffror var för sig och har en variabel för "minne" - precis som när man ställer upp ett tal med penna och papper.

kan någon förstå varför man skulle vilja göra på detta sätt? står ingenting om att man ska göra så i beskrivningen till uppgiften.

Kanske för att visa något helt annat? Jag vet inte vad du står i din bok och du förklarar väldigt vagt så det är svårt att förstå vad du menar.

Permalänk
Medlem
Skrivet av anon81912:

Kanske för att visa något helt annat? Jag vet inte vad du står i din bok och du förklarar väldigt vagt så det är svårt att förstå vad du menar.

haha joo, kan förstå att det blev lite luddigt, men jag orkar inte kopiera över all text från boken.

men det är alltså en metod som börjar med att addera de två talen längst till höger, och om det blir en rest så lägger den den i en restvariabel. därefter adderar den resten samt de två talen näst längst bort till höger osv osv. precis som när man adderar genom att ställa upp för hand.

Visa signatur

MODERMODEM: Asus ROG Strix Z270E Gaming | i7 7700K | Corsair Hydro H110 | Kingston HyperX Savage 32GB DDR4 RAM | Asus GeForce RTX 3060 Ti TUF OC | Crucial BX100 500GB SSD | Phanteks Enthoo EVOLV | SilverStone Strider Evolution 1200W |

Permalänk
Inaktiv
Skrivet av morxy49:

haha joo, kan förstå att det blev lite luddigt, men jag orkar inte kopiera över all text från boken.

men det är alltså en metod som börjar med att addera de två talen längst till höger, och om det blir en rest så lägger den den i en restvariabel. därefter adderar den resten samt de två talen näst längst bort till höger osv osv. precis som när man adderar genom att ställa upp för hand.

Ok, tror jag fattar. Det är nog mest för att förklara ungefär hur det egentligen går till Med rest menar du att talet är > 9 va?

När talen adderas i datorn sker det egentligen binärt och i tvåkomplement. Det är rätt nice.

Permalänk
Medlem
Skrivet av anon81912:

Ok, tror jag fattar. Det är nog mest för att förklara ungefär hur det egentligen går till Med rest menar du att talet är > 9 va?

När talen adderas i datorn sker det egentligen binärt och i tvåkomplement. Det är rätt nice.

jo, det visste jag faktiskt vi går digital design parallellt med programmeringskursen, så vi får även jobba mycket med grindar och flip-flops. måste hålla med om att det är ganska fascinerande att se tex en adderarkrets och hur simpelt uppbyggd den är, trots att den är extremt komplicerad, och då ska man inte tala om datorn i helhet

Visa signatur

MODERMODEM: Asus ROG Strix Z270E Gaming | i7 7700K | Corsair Hydro H110 | Kingston HyperX Savage 32GB DDR4 RAM | Asus GeForce RTX 3060 Ti TUF OC | Crucial BX100 500GB SSD | Phanteks Enthoo EVOLV | SilverStone Strider Evolution 1200W |

Permalänk
Inaktiv
Skrivet av morxy49:

jo, det visste jag faktiskt vi går digital design parallellt med programmeringskursen, så vi får även jobba mycket med grindar och flip-flops. måste hålla med om att det är ganska fascinerande att se tex en adderarkrets och hur simpelt uppbyggd den är, trots att den är extremt komplicerad, och då ska man inte tala om datorn i helhet

Har ni tagit upp pipelining ännu ?

Permalänk
Medlem
Skrivet av anon81912:

Har ni tagit upp pipelining ännu ?

nae, är det nåt o ha?

Visa signatur

MODERMODEM: Asus ROG Strix Z270E Gaming | i7 7700K | Corsair Hydro H110 | Kingston HyperX Savage 32GB DDR4 RAM | Asus GeForce RTX 3060 Ti TUF OC | Crucial BX100 500GB SSD | Phanteks Enthoo EVOLV | SilverStone Strider Evolution 1200W |