Java ArrayList! | Programmering / Grafisk formgivning | Forum

A A A

Please consider registering
Guest

Search

— Forum Scope —




— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters

Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Java ArrayList!
This topic is locked
Kickio
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 45
Member Since:
januari 29, 2005
sp_UserOfflineSmall Offline
1
mars 31, 2008 - 7:52 e m
sp_Permalink sp_Print

Jag har en arraylist ArrayList list = new ArrayList();
jag behöver en metod med 3 argument, listan, int nr1 och int nr2
dessa intar innehåller intervallet på den listan jag har, behöver denna funktion för att kunna vänta på siffrorna som:
1,2,3,4,5,6,7 om intervallet är 2-5 så skall de bli 1,5,4,3,2,6,7
Kan nån ge mig nån ide på hur jag skall börja ifall jag vill bygga denna metod rekursivt?

Xun
Kommer du hit ofta?
Medlem
Forum Posts: 305
Member Since:
november 19, 2004
sp_UserOfflineSmall Offline
1187204
mars 31, 2008 - 11:13 e m
sp_Permalink sp_Print

public void asdf(ArrayList list, int a, int b) {
Integer tmp = list.get(a);
list.set(a, list.get(b));
list.set(b, tmp);
}

/* jag är väldigt trött atm, så det här kanske inte ens är i närheten av vad du söker efter 😛
Jag hoppas det fungerar
Fast, rekursion har jag ingen aning om hur du ska använda, känns bara onödigt i det här fallet :/ */

jonaz
Kommer du hit ofta?
Medlem
Forum Posts: 940
Member Since:
maj 8, 2001
sp_UserOfflineSmall Offline
1187228
april 1, 2008 - 9:14 f m
sp_Permalink sp_Print

Lånar lite kod av tidigare postare, denna kod borde funka MEN det är bara de yttersta talen som byter plats. Därför behöver man nu göra ett rekursivt anrop:


public void asdf(ArrayList<Integer> list, int a, int b) {
Integer tmp = list.get(a-1);
list.set(a, list.get(b-1));
list.set(b, tmp);
// Anropa sig själv om det finns minst 2 tal mellan a och b (annars kan de ju inte byta plats)
if(b - a >= 3) {
asdf(list, a++, b--);
}
}

OBS! Jag har inte testat detta men logiskt borde det vara rätt!?

EDIT: Såg att indexeringen inte var rätt i koden jag snodde, index börjar ju på noll så man måste dra 1 från a & b när man hämtar talen från listan!

Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB

This topic is locked
Forum Timezone: Europe/Stockholm

Most Users Ever Online: 694

Currently Online:
309 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

Andreas Galistel: 16287

Jonas Klar: 15897

ilg@dd: 10810

Nyhet: 10607

Mind: 10550

Ctrl: 10355

Gueno: 9881

Guest: 9344

Snorch: 8881

Callister: 8468

Newest Members:

GermanVevy GermanVevy

ytaletkygf ytaletkygf

jtaletaoqg jtaletaoqg

AplusMotHQ AplusMotHQ

WileysitZI WileysitZI

ppu-pro_bewRG ppu-pro_bewRG

MichaeldalIL MichaeldalIL

WilliamWotQI WilliamWotQI

FuriousBraw FuriousBraw

UbvpwcgatKX UbvpwcgatKX

Forum Stats:

Groups: 11

Forums: 59

Topics: 146630

Posts: 1300967

 

Member Stats:

Guest Posters: 2

Members: 78407

Moderators: 0

Admins: 11

Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL