---
title: "Fylla collection med närliggande värden"
type: "forum-thread"
url: "https://www.webforum.nu/amne/programmering/149190-fylla-collection-med-närliggande-värden"
topic: "Programmering"
topic_url: "https://www.webforum.nu/amne/programmering"
author: "Dino"
published: "2006-07-18T17:51:47.000Z"
updated: "2006-07-18T22:50:34.000Z"
replies: 1
views: 373
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/programmering/149190-fylla-collection-med-närliggande-värden"
---

# Fylla collection med närliggande värden

## #1 — Dino, 2006-07-18T17:51Z

```
int counter = 0; //Räknare, får högst bli 10
int increment = 2; //Stigningsgrad, kan var vad som helst
int current = 244; //Antal
int max = 1290; //Max antal
int min = 0; //Lägsta tal, alltid 0
List<int> list = new List<int>(); //En enkel collection
```

Vad jag vill göra är att fylla **list** med de 10 närmaste värderna utifrån **current** värdet. 

Exempel:
Om **current** är 144 och **increment** är 2 så skall det bli.
134, 136, 138, 140, 142, **144**, 146, 148, 150, 152, 154

Om **current** är 4 och **increment** är 2 så skall det bli.
2, **4**, 6, 8, 10, 12, 14, 16, 18, 20, 22

Värdet får inte vara mindre än **min** eller högre än **max**.

Om **current** är 144 och **increment** är 2 och **max** är 150 så skall det bli.
130, 132, 134, 136, 138, 140, 142, **144**, 146, 148, 150

Om **current** är 144 och **increment** är 2 och **min** är 140 och **max** är 150 så skall det bli.
140, 142, **144**, 146, 148, 150

Lösningar kan vara i C++, Java, C# eller annat som påminner om dessa.  Tacksam för alla fungerande förslag.

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

## #2 — pulse, 2006-07-18T22:50Z

Här får du min lösning. Den är lång och snårig men borde fungera enligt din beskrivning.

```
public class a {

	public static void main(String[] args) {
		
		final int MAX = 10;
		int inc = 2;
		int current = 144;
		int min = 30;
		int max = 150;
		
		int from = 0;
		int to = 0;
		
		if(current < min){
			System.err.println("current < min");
		}
		else if(min < 0){
			System.err.println("min < 0");
		}
		else if(current > max){
			System.err.println("current > max");
		}
		else if(min > max){
			System.err.println("min > max");
		}
		else{
			if( (max - min) / inc > MAX){
				from = (current - min) / inc;
				to = (max - current) / inc;
				if(to > from)
					to = Math.max(MAX - from, MAX / 2);
				else
					from = Math.max(MAX - to, MAX / 2);
			}
			else{
				from = (current - min) / inc;
				to = (max - current) / inc;
				from = Math.min(from, MAX - to);
				to = Math.min(to, MAX - from);
				
			}
			int dif = from + to;
			
			if(dif > MAX){
				if(from > to)
					from = MAX - to;
				else
					to = MAX - from;
			}
			int sum = 0;
			for(int i = -from; i <= to; i++){
				int a = current + (inc * i);
				System.out.print(a + " ");
				sum++;
			}
			System.out.println("\nAntal: " + sum);
		}
	}
}
```

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

---

Tråden på webben: https://www.webforum.nu/amne/programmering/149190-fylla-collection-med-närliggande-värden
