Just nu i M3-nätverket
Jump to content

skapa en klass....


M.Mever

Recommended Posts

Hej.

 

Jag ska skapa en klass som heter point, som då ska kunna hantera punkter.

i min main-metod så skapas två objekt

//main
Point pt1 = nex Point();
Point pt2 = new Point(10,10);
+ en del övrigt som skall anropa metoder i Point klassen


class Point
{
public int x = 0;
public int y = 0;
private Point pt2;


public Point() 
{

}
public Point(int i, int j) 
{


}

public void offset(int i, int j) 
{
	// offset
               }

public Object distance(Point pt2) 
{
	// distance
	//Pytagoras sats c2 = a2 + b2
	float diffx = 10;
	float diffy = 10;
	double avstand = 0;

	avstand = Math.sqrt(diffx * diffx + diffy * diffy);

	return avstand;
}

public void moveToXY(int i, int j) 
{
	// move
	x = i + x;
	y = j + y;	
}
}

 

Detta är en uppgift som jag ska göra så skulle väl behöva en liten knuff i rätt riktning. Känns som det hela med kordinater, typ, förvirrar mig som satan.

 

det sker en utskrift i main, efter att man skapat objekten.

den skriver ut pt1 och sen pt2.... och jag får sååå skumma utskrifter.

Det enda som fungerar är pytagoras,

 

hoppas ngn kan slösa lite tid.....

 

/Mever

 

Link to comment
Share on other sites

Ska väl inte spela någon roll i princip om klassen hanterar punkter eller innehåller färg på bilar eller vad för sorts exempel du har gjort förut.

 

public int x = 0;

public int y = 0;

Ska förstås inte vara publika utan privata.

 

private Point pt2;

Kan jag inte se vad du har för nytta av. Varför ska klassen ha en annan punkt?

 

public Point(int i, int j)

Ska väl spara i och j. Och det gäller väl även:

public void offset(int i, int j)

 

 

Link to comment
Share on other sites

hej

såhär ser main ut, som ej får ändras på.

 

public static void main(String[] args) 
{
	// TODO Auto-generated method stub

	// Skapa två Point-objekty 
	Point pt1 = new Point(); 
	Point pt2 = new Point(10, 10); 

	// Satsen som följer ska inte vara ”tillåten” att göra – 
	// d.v.s. vid testkörning ska utskriften inte vara genomförbar: 
	//System.out.println("(" + pt1.x + ", " + pt1.y + ")"); 
	// Skriv ut Point-objekten (virtuella metoden toString används!) 

	System.out.println(pt1); 
	System.out.println(pt2); 

	// Två Point-objekt jämförs (virtuella metoden equals används) 
	if (pt1.equals(pt2)) 
	{ 
		System.out.println("pt1 och pt2 är lika"); 
	} 
	else 
	{ 
		// Avståndet mellan två Point-objekt beräknas. 
		System.out.printf("Avståndet mellan punkterna är %.1f%n", pt1.distance(pt2)); 
	} 

	// Point-objektet flyttas -10 i x-led och 10 i y-led. 
	pt2.offset(-10, 10); 
	// Point-objektet flyttas till punkten (0, 20). 
	pt1.moveToXY(0, 20); 

	// Skriv ut Point-objekten (virtuella metoden toString används!) 
	System.out.println(pt1); 
	System.out.println(pt2); 

	// Två Point-objekt jämförs (virtuella metoden equals används) 
	if (pt1.equals(pt2)) 
	{ 
		System.out.println("pt1 och pt2 är lika"); 
	}
	else 
	{ 
		// Avståndet mellan två Point-objekt beräknas. 
		System.out.printf("Avståndet mellan punkterna är %.1f%n", pt1.distance(pt2)); 
	}

}
}

Jag ska få main att fungera..... kort och gott.

 

Link to comment
Share on other sites

Jo, men man får börja med att få lite grann att fungera och inte allt på en gång.

 

Börja med att ha en main som skapar en punkt och skriver ut värdet på den punkten och då behöver du en Point-klass som kan initieras med de två värden som definierar en punkt och som innehåller en utskriftsmetod.

 

Link to comment
Share on other sites

hej.

 

Jo, vet bara inte hur jag ska lösa det.....

den första utskriften som görs i main skall ge (0,0)

vet inte hur jag ska få point klassen att skicka det?!

 

 

 

Link to comment
Share on other sites

Det står att metoden toString ska användas. Har du läst på något om den metoden?

 

Hur har du gjort utskrifter tidigare?

 

[inlägget ändrat 2009-02-19 13:02:07 av Cecilia]

Link to comment
Share on other sites

har aldrig använt den innan..... nu ser min klass Point ut såhär

 


class Point
{
private String x;// = 0;
private String y;// = 0;
private Point pt2;
private int i;
private int j;

//private String i;
//private String j;

//private Point pt1 = 0,0;


public Point() 
{
	// TODO Auto-generated constructor stub
	//this.i = 0;
	//this.j = 0;
	//i = 0;
	//j = 0;
}
public Point(int i, int j) 
{
	// TODO Auto-generated constructor stub
	this.i = i;
	this.j = j;

}
		//Totring   191- 195 
public String toString() 
{
    StringBuilder result = new StringBuilder();





    //return result.toString();
    return ("(" + i + ", " + j + ")");
}	

public void offset(int i, int j)  //pt2 = -10,10
{
	// offset

	//x = i;
	//y = j;

	x =  toString(); //denna returnerar 10,10
	//System.out.print("X är " + x );


	for(int e = 0; e <= 7; e++)
	{
		//i = (x + ( i ));
		//j = (y + ( j ));
		x.charAt(e);
		//System.out.print("X är " + x.charAt(e) + "\n");
		int z  = Character.digit(x.charAt(e), 10);

		if(z == -1)
		{
			//ngt gick fel, ingen siffra
			System.out.print("Jorden är rund\n");
		}
		else
		{
			//Det va en siffra
			System.out.print("X är " + x.charAt(e) + "\n");

			//Nu måste jag skapa en ny sträng. en variabel som håller nummer 10 och så vidare

		}

		//System.out.print( "ÄNDRING" + "I är " + i + "  J är " + j );

	}
	//toString();
}

public Object distance(Point pt2) 
{
	// distance
	//Pytagoras sats c2 = a2 + b2
	float diffx = 10;
	float diffy = 10;
	double avstand = 0;

	avstand = Math.sqrt(diffx * diffx + diffy * diffy);

	return avstand;
}

public void moveToXY(int i, int j) 
{
	// move

}
}

 

to string fungerar ju bra nu. men sen när man anropar offset, den håller jag på med nu. då får jag in -10, 10. Men då har jag ju inte kvar värdet på förra punkten, alltså 10,10 och då blir summeringen fel.

Jag har börjat och stega mig igenom i en for-loop för att hämta ut värdena men det känns fel på ngt sätt..

 

vet du va jag menar.?!

 

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...