Gå til innhold

JSP - tabeller, løkker og behadling av data


Anbefalte innlegg

hm?

du skal gange alle tallene fra 1-10 med 10?

en måte er jo å skrive

System.out.println("1*10 = " + 1*10);
System.out.println("2*10 = " + 2*10);
System.out.println("3*10 = " + 3*10);
System.out.println("4*10 = " + 4*10);
System.out.println("5*10 = " + 5*10);
System.out.println("6*10 = " + 6*10);
System.out.println("7*10 = " + 7*10);
System.out.println("8*10 = " + 8*10);
System.out.println("9*10 = " + 9*10);
System.out.println("10*10 = " + 10*10);

Men som du ser er dette en meget dårlig måte å løse oppgaven på, og den ville blitt umulig å følge denne fremgangsmåte hvis man fikk i oppgave å skrive ut tallene opp til en million ganget med 10..

 

Derfor lager du en løkke som starter på 1 og går opp til 10. For hver runde skriver du ut resultatet

for(int i=0; i<=10; i++){
   System.out.println(i + "*10 = " + i*10);
}

Siden tallet her regnes ut inni System.out.println(String)-metoden, er det mulig du må slenge på paranteser rundt selve utregningen. Da vil den bli gjort først, og så blir alt som står inni println() bli gjort om til String.

 

 

EDIT: ser at sim tolket spørsmålet ditt litt annerledes (og han har sikkert rett), så hvis du skal skrive en tabell med alle tallene fra 1 til 10, ganget med hverandre, er en god løsning å regne ut linje for linje. Altså, først finner du en måte å regne ut 1*1, 1*2, 1*3, ... , 1*9, 1*10. Har du fått til dette, kan du putte alt inn i en forløkke og bytte ut 1-tallet med en variabel som øker med én pr gjennomgang...

Endret av qualbeen
Lenke til kommentar
Videoannonse
Annonse
for (int i = 1; i <= 10; i++) {
   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.

7000171[/snapback]

 

Får feilmelding på linje="";

 

Er noe slikt jeg tenker på:

gangetabell1.jpg

Lenke til kommentar

Takk, det ble jo kjempebra!

Nå skal jeg bare få det organisert i en tabell.

 

Edit: noe jeg ikke helt får til, får del det opp i rader, men ikke inn i kolonner, uansett hvor jeg setter out.println("<td>"); og avslutter den.

Endret av dagjonas
Lenke til kommentar
<table>
for (int i = 1; i <= 10; i++) {
  String linje = "";
  System.out.println("<tr>\n");
  for (int j = 1; j <= 10; j++) {
      linje += "<td>" + i*j + "</td>";
  }
  System.out.println(linje + "\n");
  System.out.println("</tr>\n");
}
</table>

Lenke til kommentar

<td> har vel strengt tatt mer med html en java? jeg har iallefall ikke kjennskap til noen <td> i java. Men poenget er vel kun å få utskrift til skjerm? Så lenge det ser ut som en tabell, må vel det holde?

 

Mitt tips: Enten legger du inn passende antall mellomrom mellom hvert tall " 1 2 3 osv ", eller så legger du inn \t i strengen.

\t = tabulator

\n = ny linje

Lenke til kommentar

Jeg har nå denne koden

 

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

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

 

Men det kommer ingenting i nettleseren...

Lenke til kommentar

Jeg følger opp med et nytt spørsmål, jeg skal lage en metode" tilfeldigTall" som tar inn som parameter et heltall. Metoden skal så returnere et tilfeldig heltall mellom 0 og det tallet som kom inn som parameter. Hva gjør jeg galt her:

 

<%!
int tilfeldigTall( int (int)(Math.random() * 2) ){
return tilfeldigTall;
}
%>

<% out.println(tilfeldigTall); %>

Lenke til kommentar

<%!
int tilfeldigTall(int n) {
  return (int)(Math.random() * n);
}
%>

<%
out.println(tilfeldigTall(10));
%>

 

Math.random gir deg en double mellom 0 og 1. Ganger du denne med n (øvre grense) vil du få et tall mellom 0 og n.

 

Koden over vil skrive ut et tilfeldig tall mellom 0 og 10.

Lenke til kommentar

Gjort dette:

-Lag først lage en metode tilfeldigTall som tar inn som parameter et heltall. Metoden skal så returnere et tilfeldig heltall mellom 0 og det tallet som kom inn som parameter (eksklusive).

 

-Lag nå en metode finnHoyeste som tar inn som parameter en tabell av typen int. Det denne metoden skal gjøre er å finne det største tallet i den tabellen som kom inn som parameter. Om det er flere elementer i tabellen som deler på å ha høyest verdi, holder det å finne én av disse. Metoden skal så returnere indeksen til den verdien som var høyest.

 

-Først må du lage en tabell av typen String som du kaller partier. Denne skal inneholde navnet på alle de partiene du ønsker å inkludere i valget.

 

-I tillegg til denne trenger du en annen, like stor, tabell som skal inneholde stemmer. Denne tabellen må ha en celle per kandidat.

 

Skal gjøre dette:

Simulere stortingsvalg med 200 mennesker.

 

Så kan du la en og en person gå til stemmelokalene for å stemme. For å bestemme hvilken kandidat denne personen stemmer på bruker du metoden tilfeldigTall() som du laget i deloppgave 1 . Det er selvsagt lov å utnytte elektronisk stemmegivning til det ytterste ved å modifisere denne metoden slik at ditt parti vinner.

 

Til slutt må du bruke metoden finnHoyeste() som du lagde i deloppgave 2 for å finne ut hvilket parti som fikk flest stemmer, for så å skrive ut hvem som er vinneren av valget.

 

Kode så langt:

 

<i>Deloppgave 1:</i>
<p>
<%!
int tilfeldigTall(int n) {
 return (int)(Math.random() * n);
}
%>

<%
out.println(tilfeldigTall(11));
%>
<p>

<i>Deloppgave 2:</i>
<p>
<%!
int finnHoyeste(int[] tab){
  int storst = 0;
  for(int i = 1;i<tab.length;i++){
      if(tab[i] > tab[storst]){
     storst = i;
}
}
  return storst;
}
%>

<% 
for(int i=0;i<tab.length;i++){  	
 out.println(tab[i] + "<br/>");	}
%>
<p> 
<%
int hoyeste = finnHoyeste(tab);
out.println("Høyest verdi har element nr: " + ID[hoyeste]);
%>
<p>

<i>Deloppgave 3</i>
<p>
<% 
String[] partier = {"Ap", "SV", "Sp", "V", "KrF", "H", "FrP"};
int[] tabell = new int[7];
%>

 

 

Nå står jeg fast.

Lenke til kommentar
<%!

int tilfeldigTall(int n) {
  return (int)(Math.randon() * n);
}

int finnStorsteIndex(int[] A) {
  storste = 0;
  for(int i = 1; i < A.length; i++) {
     if (A[i] > A[storste]) {
        storste = i;
     }
  }
  return storste;
}

%>

<%
// Vi skal simmulere et stortingsvalg med 200 stemmere.

// Oppretter et string-array med partiene

String partier = {"Ap", "SV", "Sp", "V", "KrF", "H", "FrP"};

// Oppretter et int-array som skal holde på stemmene. Stemmene til et parti 
// ligger på samme index som partiet.
// Stemmene til Ap vil altså ligge i stemmer[0].

int[] stemmer = new int[partier.length]

for(int i = 0; i < 200; i++) {
  // Genererer et tilfeldigtall mellom 0 og lengden på tabellen (indexer i
  // stemme-arrayet)
  // Legger til 1 stemme på denne indexen i stemme-arrayet.

  stemmer[tilfeldigTall(stemmer.length)]++;

  // Hvis du skal skrive ut hvilket parti som blir stemt på hver gang noen
  // stemmer, må du endre litt på denne metoden.
}

// Skrive ut vinneren av valget
out.println("Vinneren av valget ble: " + partier[finnStorsteIndex(stemmer)])
%>

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...