webForumDet fria alternativet

Får inte fram värdet i min vektor

3 svar · 320 visningar · startad av Broms

BromsMedlem sedan sep. 2002188 inlägg
#1

Fasen *svär* kör ett program enligt nedan.. i Fastighet.java finns klass och metoder som tillämpas i Fastighet_test.java.. Det som inte fungerar är anropet av funktionen för att ta fram försäljarens arvode efter att ett slutpris på fastigheten satts.. intSlutPris sätts enligt metoden innan, men sedan blir det problem när getProvision tillämpas. Jag vill som indata till denna metod ha slutpriset på en fastighet som väljs via index på fastigheten i vektorn. Kan någon kika på detta åt mig? Får inte tag på slutpriset när jag skall anropa provisions classen.. :\ Please hjälpa..

Fastighet.java

import extra.*;

public class Fastighet {

	// Instansvariabel
	private String stringAdress;
	private int intStorlek, intHyra, intStartPris, intSlutPris;
	private float floatProv;

	// Kontrstuktorer
	public Fastighet(String a, int s, int h, int sp, int sp2 ) { // Initierar instansvariablerna stringAdress, intStorlek
		stringAdress = a;										 // intHyra och intStartPris med de startvärdena som anges i a,
		intStorlek = s;											 // s, h och sp
		intHyra = h;
		intStartPris = sp;
		intSlutPris = sp2;
	}

	// Metoder
	public void setSlutPris(int v) { // Anrop av metoden setSlutPris(<nytt värde>)
		intSlutPris = v;			 // sätter värdet på intSlutPris till värdet på v
	}
	
	public int getSlutPris() { // Anrop av metoden getSlutPris() returnerar
		return intSlutPris;	   // värdet på intSlutPris
	}

	public float getProvision(int x){ // Anrop av metoden giveProvision returnerar värdet
		floatProv = x*0.07; 		   // på tänkt provision av intSlutPris, med 7%
		return floatProv;
	}

	public String toString() {
		return "Adress: " + stringAdress + ". Storlek: " + intStorlek + ". Hyra: " + intHyra + ". Startpris: " + intStartPris + ". Slutpris: " + intSlutPris + ".";
	}

} // class

Fastighet_test.java

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

// Programmet skapar fastigheter med indata som
// adress, storlek, hyra och startpris enligt 
// Fastighet(String a, int s, int h, int sp )

public class Fastighet_test {

	public static void main (String[] arg) {

        System.out.print("-- Välkommen till Fastighetsbanken.net --\n");
        //System.out.print("Starta editeraren med 1, avsluta program med 0: ");

        // Skapar en ny vektor fastigheter
		Vector fastigheter = new Vector();

		// Skapar räknare till do-while- och if-satser som följer.		  
		int i=1, oi=0;

		String b_adress;
		int b_storlek, b_hyra, b_startpris, b_slutpris;

		do{

    		Std.out.print("Vill du lägga till en ny fastighet? 1=ja, 0=nej: ");
    		i = Std.in.readInt();
    		Std.in.skipLine();

    		if (i == 1){    			
        		Std.out.println("Ange Adress: ");
        		b_adress = Std.in.readLine();
   		
        		Std.out.println("Ange storlek (i hela kvm): ");        		
        		b_storlek = Std.in.readInt();

        		Std.out.println("Ange manadshyra (i hela kr): ");
        		b_hyra = Std.in.readInt();       

        		Std.out.println("Ange startpris (i hela kr): ");
        		b_startpris = Std.in.readInt();
     		
        		fastigheter.add(new Fastighet(b_adress, b_storlek, b_hyra, b_startpris,0));
    		}
    			
		} while (i == 1);

		Std.out.println();		

		// Utskrift av alla fastigheter i vektorn
		for(int n = 0; n < fastigheter.size(); n++){
    		System.out.print(fastigheter.get(n) + "\n");
		}

		// Tom rad
		Std.out.println();

		Std.out.print("Vill du: sätta ett slutpris? (skriv 1), kolla provision (skriv 2) eller avsluta (skriv 0): ");
		oi = Std.in.readInt();

		if(oi == 1){

			int c_index, c_slutpris;

			// Utskrift av alla fastigheter i vektorn, indexerade!		
			for(int n = 0; n < fastigheter.size(); n++){
    			System.out.print("Index: " + n + " - " + fastigheter.get(n) + "\n\n");
			}

			// Tom rad
			Std.out.println();

			// Läsa in index för att plocka ut rätt värde
			Std.out.print("Ange index på fastigheten: ");
			c_index = Std.in.readInt();

			Std.out.println("Ange slutpris (i hela kr): ");        		
        	c_slutpris = Std.in.readInt();

			Fastighet tmpFastighet = (Fastighet)fastigheter.get(c_index);
			tmpFastighet.setSlutPris(c_slutpris);

        	Std.out.println("Fastighetens info efter ändring");

        	System.out.print(fastigheter.get(c_index) + "\n");

			}
		else if(oi == 2){

			float d_provision;
			int d_index, d_hej, d_hej2;

			// Utskrift av alla fastigheter i vektorn, indexerade!		
			for(int n = 0; n < fastigheter.size(); n++){
    			System.out.print("Index: " + n + " - " + fastigheter.get(n) + "\n\n");
			}

			// Tom rad
			Std.out.println();

			// Läsa in index för att plocka ut rätt värde
			Std.out.print("Ange index på fastigheten: ");
			d_index = Std.in.readInt();

			Fastighet tmpFastighet2 = (Fastighet)fastigheter.get(d_index);
			d_hej = tmpFastighet2.getSlutPris();			
			d_hej2 = tmpFastighet2.getProvision(d_hej);
			
        	System.out.print(fastigheter.get(d_index) + "\n");
		}

	} // main
} // class
BromsMedlem sedan sep. 2002188 inlägg
#2

ändrade float till double för att slippa error om loss of precision, men jag får det ändå inte att fungera.. :\

BromsMedlem sedan sep. 2002188 inlägg
#3

det löste sig nu.. =)

jmeMedlem sedan maj 20012 237 inlägg
#4

Berätta gärna också vad som var fel och hur du löste det. :)

254 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
131 ms — hämta forumlista (db)
121 ms — hämta statistik (db)
125 ms — hämta tråd, inlägg och bilagor (db)