Gå til innhold

JSP - tabeller, løkker og behadling av data


Anbefalte innlegg

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
Lenke til kommentar
Videoannonse
Annonse
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
Lenke til kommentar

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.

Lenke til kommentar

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
Lenke til kommentar

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.

Lenke til kommentar

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)

Lenke til kommentar
 ... 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
Lenke til kommentar
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
Lenke til kommentar

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
Lenke til kommentar

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?

Lenke til kommentar

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]);
%>

Lenke til kommentar

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

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