---
title: "Hjälp med for-loop"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/160189-hjälp-med-for-loop"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "Vinnaren"
published: "2007-05-11T18:27:52.000Z"
updated: "2007-05-13T08:29:19.000Z"
replies: 11
views: 524
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/160189-hjälp-med-for-loop"
---

# Hjälp med for-loop

## #1 — Vinnaren, 2007-05-11T18:27Z

Hej

Jag behöver hjälp med en for loop. Har följande kod:

```
for(int i=2007; i<2009; i++)
{
       out.print("<option value='"+i+"'>"+i+"</option>");
}
```

 

Jag har en dropdown lista som jag vill fylla med årtal. Antalet årtal som ska finnas i dropdown listan ska vara max 2. Det första årtalet som ska finnas i dropdown listan ska vara det nuvarande året (nu alltså 2007). Andra året som ska finnas i dropdown listan är året efter det nuvarande året (alltså 2008, nästa år). I stället för att skriva som jag har gjort ovan i koden vill jag att 2007 ska vara det aktuella året som automatiskt ska skrivas ut med någon datumfunktion i java. 

Frågan är då, hur löser jag detta på bästa/enklaste sätt??

Tacksam för all hjälp   :bire   :stud

Permalänk: https://www.webforum.nu/p/160189

## #2 — Compusa, 2007-05-12T07:15Z

Din beskrivning av problemet är ganska otydlig, läs gärna igenom den och förtydliga så ska jag nog kunna hjälpa dig. Varför använder du html-taggar i din for-loop?

Permalänk: https://www.webforum.nu/p/1976812

## #3 — Vinnaren, 2007-05-12T08:01Z

uppdaterad fråga   :bire Hoppas det vart bättre  :q

Permalänk: https://www.webforum.nu/p/1976818

## #4 — Compusa, 2007-05-12T09:04Z

Jo lite bättre, men jag förstår fortfarande inte varför du använder dig av HTML-taggar när det är Java det gäller?

Importera först paketet:

```
import java.util.Calendar;
```

 

Sedan borde följande göra susen:

```
Calendar cal = new GregorianCalendar();

for (int year = cal.get(Calendar.YEAR); year < year + 2; year++) {
    out.print("<option value='"+year+"'>"+year+"</option>");
}
```

Hoppas det hjälpte :)

Permalänk: https://www.webforum.nu/p/1976838

## #5 — Vinnaren, 2007-05-12T10:03Z

haha, det var inte flera miljoner år jag ville ha, utan enbart 2 i listan   x( 
Så den funkade inte redigt.

Permalänk: https://www.webforum.nu/p/1976852

## #6 — Compusa, 2007-05-12T10:19Z

Opps sorry, följande är testad och fungerar!

```
Calendar cal = new GregorianCalendar();

for (int year = cal.get(Calendar.YEAR), yearLimit = year + 1; year <= yearLimit; year++) {
    System.out.print("<option value='"+year+"'>"+year+"</option>");
}
```

Eller så här:

```
Calendar cal = new GregorianCalendar();
int year = cal.get(Calendar.YEAR); 
		
for (int yearLimit = year + 1; year <= yearLimit; year++) {
    System.out.print("<option value='"+year+"'>"+year+"</option>");
}
```

Ytterligare ett alternativ (förmodligen snyggaste sättet) ;)

```
Calendar cal = new GregorianCalendar();
int yearLimit = cal.get(Calendar.YEAR) + 1; 
				
for (int year = cal.get(Calendar.YEAR); year <= yearLimit; year++) {
    System.out.print("<option value='"+year+"'>"+year+"</option>");
}
```

Permalänk: https://www.webforum.nu/p/1976858

## #7 — Vinnaren, 2007-05-12T10:51Z

Tack Compusa, nu funkar det   :birp

Kan man göra på något sätt att aktuellt år markeras i list rutan??

Permalänk: https://www.webforum.nu/p/1976868

## #8 — Compusa, 2007-05-12T10:58Z

Busenkelt :)
Gjorde om loopen lite...

```
Calendar cal = new GregorianCalendar();
int currentYear = cal.get(Calendar.YEAR); 
				
for (int year = currentYear, yearLimit = currentYear + 1; year <= yearLimit; year++) {
    if (year == currentYear)
        System.out.print("<option value='"+year+"' selected>"+year+"</option>");
    else
        System.out.print("<option value='"+year+"'>"+year+"</option>");
}
```

Är det Java Server Pages du håller på med?   :q

Permalänk: https://www.webforum.nu/p/1976871

## #9 — Vinnaren, 2007-05-12T11:50Z

Tack, nu funkar den som jag vill   :bire 

Det är både jsp och java -classer   :P

Permalänk: https://www.webforum.nu/p/1976880

## #10 — Compusa, 2007-05-12T12:15Z

Bra bra, då förstår jag bättre varför du spottar ut html-taggar.

Permalänk: https://www.webforum.nu/p/1976881

## #11 — Lime, 2007-05-13T08:13Z

Det snyggaste sättet är att använda sig av JavaServer Pages Standard Tag Library (JSTL). Då måste du använda dig av JSTL-biblioteket Core (c) .

Jakarta har en riktigt bra implementation av JSTL som du kan ladda ner från <http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html>.

Det blir att se ut något såhär:

```php
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import="java.util.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%java.util.Calendar calendar = java.util.GregorianCalendar
					.getInstance();
			java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
					"yyyy");
%>

<c:set var="now" value="<%=sdf.format(calendar.getTime())%>" />

<%calendar.add(Calendar.YEAR, 10);%>

<c:set var="future" value="<%=sdf.format(calendar.getTime())%>" />
<select name="year">
	<c:forEach begin="${now}" end="${future}" var="year">
		<option><c:out value="${year}" /></option>
	</c:forEach>
</select>
</body>
</html>
```

TagLibs är lite knepiga att sätta sig in i men när du gjort det så blir det oerhört mycket renare kod... och så finns det jäkligt mycket som är gjort redan.

Permalänk: https://www.webforum.nu/p/1977060

## #12 — Vinnaren, 2007-05-13T08:29Z

tack, ska prova det med   :e

Permalänk: https://www.webforum.nu/p/1977064

---

Tråden på webben: https://www.webforum.nu/amne/java/160189-hjälp-med-for-loop
