Gå til innhold

JSP - tabeller, løkker og behadling av data


Anbefalte innlegg

Skrevet (endret)

En tabell med en kolonne kan skrives og gis verdier slik:

int[] temperatur = new int[]{13,14,20,19,15};

 

Men hva med en tabell med tre kolonner, hvorfor blir ikke det:

int[][][] tre = new int[][][]{13,14,20,19,15}{1,2,3,4,5}{2,3,4,5,6}; ?

Endret av dagjonas
Videoannonse
Annonse
Skrevet (endret)
En tabell med en kolonne kan skrives og gis verdier slik:

int[] temperatur = new int[]{13,14,20,19,15};

 

Men hva med en tabell med tre kolonner, hvorfor blir ikke det:

int[][][] tre = new int[][][]{13,14,20,19,15}{1,2,3,4,5}{2,3,4,5,6}; ?

6937586[/snapback]

fordi det er en tabell, ikke tre uavhengige. Prøv med klammeparantes rundt det hele, altså: { {1,2,3} , {4,5,6} , {7,8,9} }

 

Når jeg skal oprette en tabell med verdier jeg allerede kjenne, pleier jeg å gjøre det litt annerledes, jeg har ikke med "new int[]", altså blir det slik:

int[] tabell = {1,2,3,4,5,6};

 

Skal man opprette en tabell uten å angi hva som er i hver celle, må man derimot ha med "new int[lengde];"

Endret av qualbeen
Skrevet (endret)

OK, takk skal du ha.

 

Edit:

Oppfølgingsspørsmål, jeg har nå en tallmenge gitt i den tabellen, fra disse skal jeg lage en for-løkke som sjekker hvilken verdi som er størst, der står jeg litt fast.

Endret av dagjonas
Skrevet

Hvis det er en 3dimesnjonal tabell du har må du lage 3 for-løkker for å traversere denne tabellen. Altså, en for løkke, med en for løkke, med en for løkke inni :) hvsi du skjønner.

 

int[][][] tabell = {.....};

int storsteverdi = 0;

 

for (int i = 0; i<tabell.length; i++){

 

for (int j = 0; i<tabell.length; i++){

 

for (int k = 0; i<tabell.length; i++){

if(tabell[j][k] > storsteverdi){

storsteverdi=tabell[j][k];

}

}

}

}

 

noe slikt... veldig fort gjort, så kan være endel feil her.. bruker sjelden slike tabeller da de tar både plass og tid å gå gjennom... dette er ingen rask "algoritme" :) hvis det avr det du var ute etter.

Skrevet (endret)

for (int i=0; i<tab.length; i++){
   for (int j=0; j<tab[i].length; j++){
       for (int k=0; k<tab[i][j].length; k++){
           //for å få ut det som ligger på plass 'k'
           int l = tab[i][j][k];

       }
   }
}

 

foreta samme sjekk som står skrevet i innlegget over

Endret av qualbeen
Skrevet

Blir ikke så jeg får til dette gitt.

 

La oss si at tabellen min ser slik ut:

tabell.jpg

 

Opprettet slik:

<%
int[] filmID = {101,102,103,104,105};
int[] pris = {(int)(50 + Math.random() *100),(int)(50 + Math.random() *100),(int)(50 + Math.random() *100),(int)(50 + Math.random() *100),(int)(50 + Math.random() *100)};
int[] karakter = {1+(int)(Math.random() *6),1+(int)(Math.random() *6),1+(int)(Math.random() *6),1+(int)(Math.random() *6),1+(int)(Math.random() *6)};
%>

 

Da vil jeg ha skrevet ut:

"Filmen med den høyeste prisen er filmnr: x, med prisen: x".

 

Her er hva jeg har prøvd så langt (så langt bare sjekket pris):

<%
int hoyestePris = 0;

for (int i=0;i<pris.length;i++){
if(pris[i] > hoyestePris){
hoyestePris=pris[i];
out.println("Filmen med den høyeste prisen er filmnr:" + "" + "x"+ "med prisen:" + pris[i]);
}
}
%>

 

Og det blir ikke helt bra.

Skrevet

I'm making progress!

 

Fått til å finne den største verdien nå:

 

<%!
int hoyestePris(int[] tab){
int storst = tab[0];;
for(int i = 1;i<tab.length;i++){
 	if(tab[i] > storst){
 	storst = tab[i];
}
}
return storst;
}
%>
<%
int svar = hoyestePris(pris);
 out.println("Filmen med den høyeste prisen er" + " " + "x" + " " + "som koster" +" "  + svar);
%>

 

Nå er spørsmålet hvordan jeg skal få assosiert den høyeste prisen med ID-nummeret, noen som kan vise meg? (tabellen med film-IDene heter filmID, se litt legre opp)

Skrevet (endret)
 ... masse annet ...
 out.println("Filmen med den høyeste prisen er" + " " + "x" + " " + "som koster" +" "  + svar);

6985587[/snapback]

Hvorfor ikke endre det du skriver ut til
out.println(""Filmen med den høyeste prisen er " + variabelHer + " som koster " + svar);

Edit: trøbbel med noe quoting :-/

Endret av qualbeen
Skrevet

Hm, er ikke sikkert jeg skjønner hva du mener, men prøvde å sette inn filmID for "x", men det blir ikke rett. Jeg skjønner ikke hvordan koden skal finne ut hvilken ID som er tilordnet den høyeste prisen.

Skrevet (endret)
I'm making progress!

 

Fått til å finne den største verdien nå:

 

<%!
int hoyestePris(int[] tab){
   int storst = tab[0];
   for(int i = 1;i<tab.length;i++){
       if(tab[i] > storst) {
      storst = tab[i];
}
   }
   return storst;
}
%>
<%
int svar = hoyestePris(pris);
 out.println("Filmen med den høyeste prisen er" + " " + "x" + " " + "som koster" +" "  + svar);
%>

 

Nå er spørsmålet hvordan jeg skal få assosiert den høyeste prisen med ID-nummeret, noen som kan vise meg? (tabellen med film-IDene heter filmID, se litt legre opp)

6985587[/snapback]

 

Hvis du returnerer indexen til det største elementet i stedet for prisen så er det mye enklere.

 

<%!
int hoyestePris(int[] tab){
   int storst = 0;
   for(int i = 1;i<tab.length;i++){
       if(tab[i] > tab[storst]){
      storst = i;
}
   }
   return storst;
}
%>
<%
int hoeyestePrisIndex = hoyestePris(pris);
out.println("Filmen med den høyeste prisen er" + " " + hoyestePrisIndex + " " + "som koster" + " "  + pris[hoyestePrisIndex]);
%>

Endret av sim
Skrevet (endret)

Takk, er litt nærmere nå da.

 

<%
int hoyestePrisIndex = hoyestePris(pris);
out.println("Filmen med den høyeste prisen er filmnr:" + " " + hoyestePrisIndex + " " + "som koster" + " "  + pris[hoyestePrisIndex]);
%>

 

returnerer "Filmen med den høyeste prisen er filmnr: 3 som koster 136", her er det dog en liten "feil", filmnr. blir returnert som tall fra 0-4, iom. at tabellen inneholder 5 tall, 101-105, hvordan kan jeg få ID-nummeret der i stedet for hvilken rad-1 det er i tabellen?

 

Edit:

-kan legge til 101 foran "hoyestePrisIndex", men det synes jeg er en litt klønete måte å gjøre det på hvis jeg kan få gjort det annerledes.

Endret av dagjonas
Skrevet

Har du filmnummerene i en annen tabell med samme rekkefølge på elementene, kan du trekke ut elementet med index lik hoyestePrisIndex. Hvis ikke er nok det å plusse på 101 den greieste løsningen.

Skrevet

Det har jeg, er slik:

int[] filmID = {101,102,103,104,105};
int[] pris = {(int)(50 + Math.random() *100),(int)(50 + Math.random() *100),(int)(50 + Math.random() *100),(int)(50 + Math.random() *100),(int)(50 + Math.random() *100)};

 

Hvordan blir det da?

Skrevet
<%
int hoyestePrisIndex = hoyestePris(pris);
out.println("Filmen med den høyeste prisen er filmnr:" + " " + filmID[hoyestePrisIndex] + " " + "som koster" + " "  + pris[hoyestePrisIndex]);
%>

Skrevet

unødvendig og legge til mellomrom mellom to strenger, det kan man da putte rett inn i strengen (som jeg prøvde å nevne tidligere). Derfor ville jeg har gjort det slik

<%
int hoyestePrisIndex = hoyestePris(pris);
out.println("Filmen med den høyeste prisen er filmnr: " + filmID[hoyestePrisIndex] + " som koster " + pris[hoyestePrisIndex]);
%>

Skrevet

Da er vi på'n igjen, denne gangen skal jeg lage en gangetabell, 10-gangen. Da har jeg skjønt at jeg må ha to for-løkker inni hverandre, og det er vel det. :dontgetit:

Skrevet (endret)

for (int i = 1; i <= 10; i++) {
  String linje = "";
  for (int j = 1; j <= 10; j++) {
      linje += " " + i*j;
  }
  System.out.println(linje + "\n");
}

 

Denne skal fungere tror jeg. Har ikke fått testa, så det kan være at byggingen av linje-strengen ikke fungerer skikkelig.

Endret av sim

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...