---
title: "Plocka ut och ändra information i en vektor?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/116193-plocka-ut-och-ändra-information-i-en-vektor"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "Broms"
published: "2004-11-18T14:52:54.000Z"
updated: "2004-11-18T15:36:29.000Z"
replies: 9
views: 306
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/116193-plocka-ut-och-ändra-information-i-en-vektor"
---

# Plocka ut och ändra information i en vektor?

## #1 — Broms, 2004-11-18T14:52Z

Jag har ett program som lägger till böcker i en vektor.. Om jag vill plocka ut dessa värden senare, och uppdatera dem, t.e.x. om jag vill ändra utgivningsår för en bok då en ny upplaga kommer, hur göra? Om datat jag vill ändra ligger mitt i vektorn och 100 böcker finns innan och efter denna bok, men jag bara vet på vilken plats den ligger.. ska jag lägga till en räknare som id först till varje bok?

Kod i Bok.java

```
import extra.*;

public class Bok {
	
	// Instansvariabel
	private String stringTitel, stringForfattare;
	private int intUtg;

	// Kontrstuktorer
	public Bok(String titel, String forfattare, int utg ) { 	// Initierar instansvariablerna stringTitel, stringForfattare
		stringTitel = titel;									// och intUtg med de startvärdena som anges i titel,
		stringForfattare = forfattare;							// forfattare och utg
		intUtg = utg;
	}
	
	// Metoder
	public void setUtg(int u) { // Anrop av metoden setUtg(<nytt värde>)
		intUtg = u;				// sätter värdet på intUtg till värdet på u
	}
	public String giveTitel() { // Anrop av metoden giveTitel returnerar värdet
		return stringTitel;		// på stringTitel
	}
	public String toString() {
	return "Titel: " + stringTitel + ". Forfattare: " + stringForfattare + ". Utg.ar: " + intUtg + ".";
	}
	
} // class
```

Kod i Bok_test.java

```
import extra.*;
import java.util.*; // Vector ligger i java.util

// Programmet skapar och tar bort böcker med indata som
// titel, författare och utgivninsår enligt formeln:
// Bok(String titel, String forfattare, int utg )

public class Bok_test2 {

	public static void main (String[] arg) {

		// Skapar en ny Bok med titel "Sagan om ringen", 
		// författare J.R.R Tolkien och utg.år 1998
		
		// Skapar en bok
		Bok b1 = new Bok("Sagan om ringen","J.R.R Tolkien",1998);
		
		// Skrivet ut bokinfon
		Std.out.println(b1);
		
		// Skrivet ut titeln på boken
		Std.out.println("Titel --> " + b1.giveTitel());
		
		// Ändrar utg.året till 2001
		b1.setUtg(2001);
		
		// Skrivet ut bokinfon på nytt
		Std.out.println(b1);

		// Tom rad
		Std.out.println();
				
		Vector books = new Vector(); // Skapar en ny vektor books
		  
		int i=1;
		
		String b_titel, b_forfattare;
		int b_utg;
		
		do{
			
    		Std.out.print("Vill du skapa en ny bok? 1=ja, 0=nej: ");
    		i = Std.in.readInt();
    		Std.in.skipLine();
    		
    		if (i == 1){    			
        		Std.out.println("Ange Boktitel: ");
        		b_titel = Std.in.readLine();
     		        		
        		Std.out.println("Ange Författare: ");        		
        		b_forfattare = Std.in.readLine();
       		
        		Std.out.println("Ange utgivninvsår: ");
        		b_utg = Std.in.readInt();
        		        		
        		books.add(new Bok(b_titel, b_forfattare, b_utg ));
    		}
    			
		} while (i == 1);

		Std.out.println();		
		
		// Utskrift av alla böcker i vektorn
		for(int n = 0; n < books.size(); n++){
    		System.out.print(books.get(n) + "\n");
		}
		
		// Tom rad
		Std.out.println();
		
	} // main
} // class
```

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

## #2 — Phorpher, 2004-11-18T15:05Z

Om du vet vilken plats boken ligger i vektorn så är det ju bara att hämta ut bok-objektet på den platsen och ändra?

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

## #3 — Broms, 2004-11-18T15:08Z

Måste man ändra all information i vektorn då? eller går det att anropa precis just årtalet? hur skulle det isf se ut? :\\

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

## #4 — Mc Fetto, 2004-11-18T15:15Z

namnpåvektor\[indextal\].setUtg(årtal);

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

## #5 — Broms, 2004-11-18T15:15Z

tack ska prova det detsamma :p

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

## #6 — Phorpher, 2004-11-18T15:18Z

Om du vet att boken ligger på index 100 så hämtar du ut boken och ändrar objektet du får ut.

```
Bok tmpBok = books.get(100); // Plockar ut bok nummer 100 ur vektorn.

tmpBok.setUtg(3); // Ändra utgåva till 3.
```

Eller gör som McFetto visade. Beror ju lite på om du tänker göra något mer med objektet.

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

## #7 — Broms, 2004-11-18T15:24Z

säger incompatible types till mig.. :\\ testa att köra min kod, och spara ett par böcker... ta ut infon ur en bok och spara om.. funkar inte när jag gör det :\\

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

## #8 — Phorpher, 2004-11-18T15:33Z

Du måste nog typecasta objektet du får ut till ett Bok-objekt.

```
Bok tmpBok = (Bok)books.get(100);

tmpBok.setUtg(3);
```

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

## #9 — Viktor, 2004-11-18T15:34Z

Det är ett litet fel i Phorpher kod, du måste typomvandla det som kommer ut ur vectorn till en Bok (eller den typ som det är),

```
Bok tmpBok = (Bok)books.get(100); // Plockar ut bok nummer 100 ur vektorn.

tmpBok.setUtg(3); // Ändra utgåva till 3.
```

/Viktor

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

## #10 — Broms, 2004-11-18T15:36Z

Tack Phorpher, nu funkar det fint, du är guld man :p

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

---

Tråden på webben: https://www.webforum.nu/amne/java/116193-plocka-ut-och-ändra-information-i-en-vektor
