Gå til innhold

importere en string fra en annen klasse


Anbefalte innlegg

Jeg har en string jeg skal bruke den og trenger å importere den in i flere klasser. men jeg får det ikke til

 

public class HybelHus {

Scanner input = new Scanner(System.in);

 

boolean runde = true;

int valg;

public String leilighet()

{

return leilighet;

}

 

det ovenstående er starten på en klasse mens dette som står under en starten på main.

 

public class Main {

public String leilighet [][];

 

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

 

HybelHus hybelhus = new HybelHus();

hybelhus.run();

 

 

jeg vil hente ut leilighet fra main og flytte den over til hybelhus. dette får jeg ikke til og det irriterer meg! hva har jeg gjort galt?

Lenke til kommentar
Videoannonse
Annonse

En statisk metode, som main-metoden er, kan direkte* kun kalle på statiske metoder og bruke statiske variabler. Med andre ord, dersom det er arrayen "public String leilighet [][];" som du ønsker å aksessere i main-metoden må du gjøre den statisk, altså skrive:

public static String leilighet [][];

 

* Indirekte, altså via et objekt, som for eksempel "hybelhus" over, kan en statisk metode også bruke ikke-statiske metoder og variabler.

 

EDIT: Omformulert.

Endret av gunnard
Lenke til kommentar

Full edit:

 

Ok, smuud fikk det til fant leilighet i alle klassene! men nå kom problemet at når jeg har hentet den så blir alle stedene jeg har brukt "leilighet"-array understreket med rød linje... ser ikke ut som om de finner leilighet

Endret av Z_AGo
Lenke til kommentar

public class Main {
public static String leilighet [][] ={{"1a",null,null,null,null},{"1b",null,null,null,null},{"1c",null,null,null,null},{"1d",null,null,null,null},{"1e",null,null,null,null},{"2a",null,null,null,null},{"2b",null,null,null,null},{"2c",null,null,null,null},{"2d",null,null,null,null},{"2e",null,null,null,null},{"3a",null,null,null,null},{"3b",null,null,null,null},{"3c",null,null,null,null},{"3d",null,null,null,null},{"3e",null,null,null,null}};

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

	HybelHus hybelhus = new HybelHus();
	hybelhus.run();
}

}

public class Hybel {

public String leilighet()
{
return leilighet();
}

int x = 1;
boolean ledig;

public void run(){

for
   (int y = 0; y < 15; y++)
   {

		if (leilighet[y][x] == null) 
		{
			ledig = true;
			System.out.println(leilighet[y][0]);
			System.out.println("Leilighet ledig");
		}
		else 
		{
			ledig = false;
			System.out.println(leilighet[y][0]);
			System.out.println("opptatt");
		}
}
}
}

 

alle det står leilighet på nå er det en rød strek under.

 

Da tok jeg med 2 klasser. main og hybel. håper det hjelper deg med å hjelpe meg! =) hehe

 

Edit: Fjernet et punktum mellom return og leilighet();

Endret av Z_AGo
Lenke til kommentar

Det gjør det :)

 

Dersom du vil bruke en statisk variabel i en annen klasse (som du har tilgang til, f.eks. at den er "public" som her), gjør du dette ved å skrive:

<klassenavn>.<variabelnavn>

 

For eksempel, for metoden:

	public String leilighet()
{
	return.leilighet();
}

som jeg regner med skal returnere selve leilighets-arrayen, skal dette skrives som:

	public String leilighet()
{
	return Main.leilighet;
}

mens for eksempel i testen:

if (leilighet[y][x] == null)

skal det stå:

if(Main.leilighet[y][x] == null)

 

Forøvrig vil nok mange reagere på kodestilen her, d.v.s. ha en statisk array i en klasse, bruke den og t.o.m. returnere den i/via metoder i en annen klasse. Om du bryr deg om dette er en annen sak :)

 

EDIT: Dersom du fjernet "." i leilighet-metoden vil den metoden nå bare kalle seg selv i det uendelige, noe som tvilsomt er det du vil.

Endret av gunnard
Lenke til kommentar

public String leilighet()

{

return.Main.leilighet;

}

når jeg skriver det får jeg illegal start of expression.. sorry at jeg må ha det inn med t-skje her.

 

hehe.. jeg skal endre på hele koden tenker jeg... må bare få den til å fungere først.. slik at jeg vet hva jeg kan gjøre for noe.. men har snart deadline. så må har noe som fungerer!

Lenke til kommentar

Bare hyggelig :)

 

Er bare en liten skrivefeil. Som du ser så finner den en String[][], altså en dobbeltarray av String's, mens den vil ha en String, siden "String" står som returtype i metodedeklarasjonen. Du må dermed skifte returtypen slik:

public String[][] leilighet()
{
return Main.leilighet;
}

For det er det som metoden skal sant, returnere hele dobbeltarray med alle leilighetene?

 

EDIT: Du fant ut av det selv ser jeg :)

Endret av gunnard
Lenke til kommentar
Ok, nå sitter jeg med et annet problem her. Hvordan kan jeg sjekke om det brukeren har skrevet inn er numeric?
Tja, basically ... Du gjør ikke det.

 

int val;
boolean accepted = false;
while (!accepted) {
String s = yourWayOfFetchingUserInput();
try {
	val = Integer.parseInt(s);
	accepted = true;
} catch (NumberFormatException e) {
	System.out.println("Not a number, please enter a number or else.");
}
}
return val;

Endret av pgdx
Lenke til kommentar

To andre måter:

 

int val;
boolean accepted = false;
while (!accepted) {
String s = yourWayOfFetchingUserInput();
if (s.matches("-?[0-9]+")) { // La til -? for å ta negative tall også.
	val = Integer.parseInt(s);
	accepted = true;
} else {
	System.out.println("Not a number");
}
}

 

eller dersom du bruker scanner:

int val;
boolean accepted = false;
Scanner sc = new Scanner(System.in);
while (!accepted) {
if (sc.hasNextInt()) {
	val = sc.nextInt();
	accepted = true;
} else {
	sc.next();
	System.out.println("Ugyldig valg");
}
}

Endret av Blackslash
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...