Kolozzeum Forum - Sveriges största träningsforum
Gå tillbaka   Kolozzeum Forum - Sveriges största träningsforum > Träning > Allmänt Forum

Svara
 
Ämnesverktyg Visningsalternativ
Gammal 2020-01-16, 12:29   #2236
Wequ
Registered User
 
Reg.datum: Jul 2010
Inlägg: 77
Är lost om det här är möjligt att göra i Java.

Jag vill läsa in strängar från en textfil och dela upp strängen i två delar och spara i varsin sträng.

Just nu så sparas strängarna på varsin rad i text filen så här :

(hej kolozzeum)[hej igen]
(Hejsan)[Tjena]
...

Det jag vill göra är att läsa in strängarna och plocka ut det som är inom ( ) och spara i en sträng samt plocka ut det som är inom [ ] och spara i en annan sträng, så resultatet av den första raden kommer bli:

Stringone = "hej kolozzeum"
Stringtwo = "hej igen"

Det här borde väl vara möjligt men hittar inte något smidigt exempel jag kan följa, någon som vet hur jag ska göra? Borde vara typ något i stil med substring eller liknande

Senast redigerad av Wequ den 2020-01-16 klockan 12:35.
Wequ är inte uppkopplad   Svara med citat
Gammal 2020-01-16, 13:49   #2237
Brofessorn
Registered User
 
Brofessorns avatar
 
Reg.datum: May 2015
Inlägg: 1 601
Citat:
Ursprungligen postat av Wequ Visa inlägg
Är lost om det här är möjligt att göra i Java.

Jag vill läsa in strängar från en textfil och dela upp strängen i två delar och spara i varsin sträng.

Just nu så sparas strängarna på varsin rad i text filen så här :

(hej kolozzeum)[hej igen]
(Hejsan)[Tjena]
...

Det jag vill göra är att läsa in strängarna och plocka ut det som är inom ( ) och spara i en sträng samt plocka ut det som är inom [ ] och spara i en annan sträng, så resultatet av den första raden kommer bli:

Stringone = "hej kolozzeum"
Stringtwo = "hej igen"

Det här borde väl vara möjligt men hittar inte något smidigt exempel jag kan följa, någon som vet hur jag ska göra? Borde vara typ något i stil med substring eller liknande
Se svaret längst ner:

https://stackoverflow.com/questions/...hesis/24256532
Brofessorn är inte uppkopplad   Svara med citat
Gammal 2020-02-11, 15:16   #2238
Wequ
Registered User
 
Reg.datum: Jul 2010
Inlägg: 77
Sitter och experimenterar med nästlade loopar

Det jag vill göra är att multiplicera alla element i en lista med alla andra element och spara summan.

Alltså har jag tex en lista som ser ut såhär [0,1,2,3] så vill jag att följande sker i första loopen: 0*1, 0*2, 0*3

I andra loopen : 1*2, 1*3

I tredje : 2*3

Och spara resultatet alla multiplikationer i en "int summa" t.ex.

Jag har skrivit följande kod:
Kod:
  List<Integer> lista = new ArrayList<>();
            lista.add(0);
            lista.add(1);
            lista.add(2);
            lista.add(3);
                     
            int summa = 0;
            
           for(int i = 0; i < lista.size(); i++){
                    for(int j = i+1; j < lista.size(); j++){
                        summa = lista.get(i) * lista.get(j);
                    }                    
                }
            System.out.print(summa);
Men får fel utskrift, jag får resultatet 6 när jag borde få summan 11
Wequ är inte uppkopplad   Svara med citat
Gammal 2020-02-11, 15:38   #2239
olander08
Älskar eterneller
 
olander08s avatar
 
Reg.datum: Aug 2006
Inlägg: 137
Citat:
Ursprungligen postat av Wequ Visa inlägg
Sitter och experimenterar med nästlade loopar

Det jag vill göra är att multiplicera alla element i en lista med alla andra element och spara summan.

Alltså har jag tex en lista som ser ut såhär [0,1,2,3] så vill jag att följande sker i första loopen: 0*1, 0*2, 0*3

I andra loopen : 1*2, 1*3

I tredje : 2*3

Och spara resultatet alla multiplikationer i en "int summa" t.ex.

Jag har skrivit följande kod:
Kod:
  List<Integer> lista = new ArrayList<>();
            lista.add(0);
            lista.add(1);
            lista.add(2);
            lista.add(3);
                     
            int summa = 0;
            
           for(int i = 0; i < lista.size(); i++){
                    for(int j = i+1; j < lista.size(); j++){
                        summa = lista.get(i) * lista.get(j);
                    }                    
                }
            System.out.print(summa);
Men får fel utskrift, jag får resultatet 6 när jag borde få summan 11
Gör en spårutskrift av summa efter rad 11. Kör och försök sedan lista ut vad som händer
olander08 är inte uppkopplad   Svara med citat
Gammal 2020-02-11, 15:38   #2240
Wequ
Registered User
 
Reg.datum: Jul 2010
Inlägg: 77
Lol är fan dum i huvudet, funkade att göra såhär bara:

Kod:
summa =summa +( lista.get(i) * lista.get(j));
sparade ju bara senaste multiplikationen i summa annars
Wequ är inte uppkopplad   Svara med citat
Gammal 2020-02-11, 15:38   #2241
olander08
Älskar eterneller
 
olander08s avatar
 
Reg.datum: Aug 2006
Inlägg: 137
Citat:
Ursprungligen postat av Wequ Visa inlägg
Lol är fan dum i huvudet, funkade att göra såhär bara:

Kod:
summa =summa +( lista.get(i) * lista.get(j));
sparade ju bara senaste multiplikationen i summa annars
Alternativt använd += operatorn.
olander08 är inte uppkopplad   Svara med citat
Gammal 2020-02-11, 15:59   #2242
Wequ
Registered User
 
Reg.datum: Jul 2010
Inlägg: 77
Ok en annan grej jag suttit och pillat på, jag vill multiplicera första och sista elementet i en lista med varandra, sedan flytta in ett steg och multiplicera näst första och näst sista med varandra osv osv och spara allt i en summa.

Alltså säg att vi har en lista [0,1,2,3,4,5]
så ska följande multiplikationer ske:
0*5=0
+
1*4=4
+
2*3=6
= 10

Det jag har skrivit just nu:
Kod:
List<Integer> lista = new ArrayList<>();
            lista.add(0);
            lista.add(1);
            lista.add(2);
            lista.add(3);
            lista.add(4);
            lista.add(5);
                     
            long summa = 0;
            
           for (int i = 0; i < lista.size(); i++){
                    summa = summa + (lista.get(i) * lista.get(lista.size()-(i+1)));                  
                }
            System.out.print(summa);
Men det här resulterar i summan 20 istället för 10, jag misstänker att loopen fortsätter efter 2*3? och alltså går igenom samma uträkningen igen vilket leder till att det blir dubbla summan, hur får jag stopp på den efter 2*3?
Wequ är inte uppkopplad   Svara med citat
Gammal 2020-02-11, 16:08   #2243
svenbanan
Banned User
 
Reg.datum: Jan 2012
Inlägg: 10 099
Citat:
Ursprungligen postat av Wequ Visa inlägg
Ok en annan grej jag suttit och pillat på, jag vill multiplicera första och sista elementet i en lista med varandra, sedan flytta in ett steg och multiplicera näst första och näst sista med varandra osv osv och spara allt i en summa.

Alltså säg att vi har en lista [0,1,2,3,4,5]
så ska följande multiplikationer ske:
0*5=0
+
1*4=4
+
2*3=6
= 10

Det jag har skrivit just nu:
Kod:
List<Integer> lista = new ArrayList<>();
            lista.add(0);
            lista.add(1);
            lista.add(2);
            lista.add(3);
            lista.add(4);
            lista.add(5);
                     
            long summa = 0;
            
           for (int i = 0; i < lista.size(); i++){
                    summa = summa + (lista.get(i) * lista.get(lista.size()-(i+1)));                  
                }
            System.out.print(summa);
Men det här resulterar i summan 20 istället för 10, jag misstänker att loopen fortsätter efter 2*3? och alltså går igenom samma uträkningen igen vilket leder till att det blir dubbla summan, hur får jag stopp på den efter 2*3?
Det ser ut som att du kanske skulle avbryta for loopen då gått igenom halva listan snarare än hela listan, annars kommer du ju få med alla element två gånger.

Senast redigerad av svenbanan den 2020-02-11 klockan 16:09.
svenbanan är inte uppkopplad   Svara med citat
Gammal 2020-02-11, 16:14   #2244
Fredszky
Kämpa! Kämpa! Kämpa!
 
Fredszkys avatar
 
Reg.datum: Aug 2001
Inlägg: 398
Ser ut som du gör:

(0*5)
+
(1*4)
+
(2*3)
+
(3*2)
+
(4*1)
+
(5*0)

Vill du sluta halvvägs får du väl göra nåt i stil med:
for (int i = 0; i < lista.size()/2; i++){
__________________
P r o f e . t
Fredszky är inte uppkopplad   Svara med citat
Gammal 2020-02-11, 16:14   #2245
olander08
Älskar eterneller
 
olander08s avatar
 
Reg.datum: Aug 2006
Inlägg: 137
Citat:
Ursprungligen postat av Wequ Visa inlägg
Ok en annan grej jag suttit och pillat på, jag vill multiplicera första och sista elementet i en lista med varandra, sedan flytta in ett steg och multiplicera näst första och näst sista med varandra osv osv och spara allt i en summa.

Alltså säg att vi har en lista [0,1,2,3,4,5]
så ska följande multiplikationer ske:
0*5=0
+
1*4=4
+
2*3=6
= 10

Det jag har skrivit just nu:
Kod:
List<Integer> lista = new ArrayList<>();
            lista.add(0);
            lista.add(1);
            lista.add(2);
            lista.add(3);
            lista.add(4);
            lista.add(5);
                     
            long summa = 0;
            
           for (int i = 0; i < lista.size(); i++){
                    summa = summa + (lista.get(i) * lista.get(lista.size()-(i+1)));                  
                }
            System.out.print(summa);
Men det här resulterar i summan 20 istället för 10, jag misstänker att loopen fortsätter efter 2*3? och alltså går igenom samma uträkningen igen vilket leder till att det blir dubbla summan, hur får jag stopp på den efter 2*3?
Du har ju redan skrivit hur beräkningen ska se ut:
Kod:
0*5=0
+
1*4=4
+
2*3=6
= 10
Deklarera int:arna som du plockar ut i varje pass och skriv ut dom. Du kan till och med få det att se ut som beräkningen ovan.
olander08 är inte uppkopplad   Svara med citat
Gammal 2020-02-11, 19:26   #2246
Wequ
Registered User
 
Reg.datum: Jul 2010
Inlägg: 77
Citat:
Ursprungligen postat av olander08 Visa inlägg

Deklarera int:arna som du plockar ut i varje pass och skriv ut dom. Du kan till och med få det att se ut som beräkningen ovan.
Förstår inte riktigt vad du menar här?

Beräkningen och listan är bara ett exempel, vill ju att det även ska funka på andra siffror i olika listor osv

Ska prova lista.size()/2
Wequ är inte uppkopplad   Svara med citat
Gammal 2020-02-12, 05:47   #2247
svenbanan
Banned User
 
Reg.datum: Jan 2012
Inlägg: 10 099
Citat:
Ursprungligen postat av Wequ Visa inlägg
Förstår inte riktigt vad du menar här?

Beräkningen och listan är bara ett exempel, vill ju att det även ska funka på andra siffror i olika listor osv

Ska prova lista.size()/2
Det borde funka. Jag vet inte vad du hade tänkt dig skulle ske med mittersta elementet i en lista med ojämnt antal. Men om du gör såhär så kommer det multipliceras med sig själv och komma med i summan.
svenbanan är inte uppkopplad   Svara med citat
Gammal 2020-02-12, 11:43   #2248
TomasB
Registered User
 
TomasBs avatar
 
Reg.datum: Sep 2009
Inlägg: 568
Nån som är expert på .sh?
__________________
All the things I really like to do are either illegal, immoral, or fattening. /Alexander Woollcott (1887-01-19 – 1943-01-23)
TomasB är inte uppkopplad   Svara med citat
Gammal 2020-02-12, 13:54   #2249
svenbanan
Banned User
 
Reg.datum: Jan 2012
Inlägg: 10 099
Citat:
Ursprungligen postat av TomasB Visa inlägg
Nån som är expert på .sh?
Varför inte skriva vad du undrar över istället och se om nån kan svara på frågan?

On topic: Nej, jag är inte expert på shellscript.
svenbanan är inte uppkopplad   Svara med citat
Gammal 2020-02-12, 13:56   #2250
Brofessorn
Registered User
 
Brofessorns avatar
 
Reg.datum: May 2015
Inlägg: 1 601
Någon skickade den här memen igår, var lite "blåsa-ut-luft-ur-näsan"-rolig.

Brofessorn är inte uppkopplad   Svara med citat


Svara


Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +1. Klockan är nu 20:50.


Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
Copyright 2015, Kolozzeum (TM)