webForumDet fria alternativet

Nybörjare: Problem med att slumpa fram en sträng ur en array.

Javaur Java

3 svar · 2 081 visningar · startad av StefanK

Medlem sedan aug. 20112 inlägg
Frågan#1

Hejsan!

Jag är väldigt ny när det gäller java så jag hoppas ni har förståelse.
Jag har börjat med att göra en method (tror jag det heter) som skriver ut alla mina sträng värden ur en array & det fungerar bra.

Men nu vill jag göra en method som slumpar fram en sträng från samma array.

Eftersom java är ganska logiskt så ser jag också att det jag gjort inte fungerar, men vet tyvärr inte hur jag skall lösa det med dom få kunskaper jag har idag.

Vore mycket tacksam om någon kan hjälpa mig i utbildningssyfte.

Places.java

import java.util.Random;
 
 // Skriver ut alla ställen.
 class  Places {
 	public void PrintAllPlaces() {
 	String[] p = {"Statoil", "Systembolaget", "Ikea", "Ica Maxi", "Coop Forum", "Media Markt", "Gröna Lund", "Lisseberg", "Shell", "Tanka", "El Giganten", "Pizzeria Lacarda" };
 	
 	for(String x: p) {
 		System.out.println(x);
 	}
 	}
 
 // Skriver ut ett slumpat ställe.
 	public void printRandomPlace() {
 		
 		Random objRand = new Random();
 		int randomNumber = 0;
 		
 		for(int counter = 0; counter <= places.length; counter++) {
 			randomNumber = objRand(counter);
 			System.out.println(places[randomNumber]);
 		}
 	}
 	}

I min main

 // Skriver ut alla platser
 		Places ObjPlaces = new Places();
 		ObjPlaces.PrintAllPlaces();
Medlem sedan juni 201161 inlägg
#2

Så vad är det du vill göra egentligen? Just nu har du alltså en metod i klassen som skapar en lokal strängarray och skriver ut den. Sedan har du en annan metod som försöker skriva ut slumpmässiga element ur en array som heter "places". Jag ser dock inte var denna variabel finns definierad. Kompilerar detta ens?

Exakt vad är det du vill åstadkomma? Du trycker på att det skall vara "samma" array, men vad menar du med samma? Samma innehåll eller samma varabel? Skall det vara samma array, måste den ju leva mellan två metodanrop och vara åtkomlig i bägge.

Medlem sedan aug. 20112 inlägg
#3

Jag ska försöka vara tydligare.

Jag vill alltså skapa 2 st anrop är möjliga i min main:

Places ObjPlaces = new Places();
ObjPlaces.PrintAllPlaces();

Places ObjRandomPlace = new Places();
ObjRandomPlac.printRandomPlace;

Det ena anropet skall Skriva ut alla värden i array:en places[]

Den 2dra ska skriva ut ett slumpat värde från samma array places[]

Så jag behöver alltså skapa en array där värdet går att hämta från andra metoder och klasser osv precis som du skrev.

Hoppas du förstår bättre nu..

Medlem sedan juni 201161 inlägg
#4

Nu måste jag bara inflika brasklappen att jag inte är Javaprogrammerare, men jag har ju hållt på med C++ sedan Bjarne uppfann det. Så jag kan inte ge dig någon källkod rakt av, men du borde ju titta på att lägga din array "places" som en medlemsvariabel i klassen. Eventuellt kan du vilja ha en konstruktor som fyller den.

Din printRandomPlace behöver ju knappast en loop, eftersom den bara skall ge ett värde.

Sedan borde du kanske tänka igenom din design lite också. Vad symboliserar ett "Places"-objekt? Vad skiljer en instans från en annan om de alltid innehåller samma lista? Borde du fundera på en statisk (eller vad de nu heter i Java) klass?

133 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)