webForumDet fria alternativet

Skicka en array

2 svar · 538 visningar · startad av sadsmile

sadsmileMedlem sedan jan. 2002177 inlägg
#1

Lösningen på detta är säkert lätt men jag kan inte komma på hur man gör, trots en massa bläddrande i böcker och sökande på nätet.

Jag har en array som jag använder i en klass. Jag skulle också vilja använda denna array i en annan klass. Hur gör jag för att skicka över array en till den andra klassen?

Vore tacksam för alla tips jag kan få. :)

/Anders

LimeMedlem sedan sep. 2001961 inlägg
#2

Hur skickar du någon annan parameter till en annan klass??

Sedan beror det lite på vad du har tänkt dig. Skall den andra klassen manipulera på samma array som du skickar eller ska den manipulera på en egen kopia?

I det första fallet är det enkelt:


int[] integers = new int[]{1,2,3,4,5,6,7,8,9, 0};

int summa = Matte.addera(integers);

Denna tar samma objekt som skapas av new int[] och gör något med det. De betyder att om Matte.addera(...) tar bort något ur arrayen så försvinner det även i den refererande klassen...

Exempel som jag använder på min Java-kurs.

public class ArrayExempel
{
	public static void main(String[] args)
	{
		int[] integers = new int[]
		{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

		ArrayManipulerare.print(integers, "Array före manipulation");
		ArrayManipulerare.replace(integers, 5, 0);
		ArrayManipulerare.print(integers, "Array efter manipulation");

		System.out.println("Clonetest");
		ArrayManipulerare.print(integers, "Array före manipulation");
		ArrayManipulerare.replace(integers.clone(), 2, 0);
		ArrayManipulerare.print(integers, "Array efter manipulation");

	}

}

import java.util.Arrays;

public class ArrayManipulerare
{

	public static int add(int[] array)
	{
		int result = 0;
		for (int i = 0; i < array.length; i++)
		{
			System.out.println("Lägger till " + array[i] + " till summan " + result);
			result += array[i];
		}

		return result;
	}

	/**
	 * @param array
	 *            Array att manipulera
	 * @param what
	 *            Vilken siffra ska ersättas
	 * @param with
	 *            Med vilken siffa
	 */
	public static void replace(int[] array, int what, int with)
	{
		int currentInt;
		for (int i = 0; i < array.length; i++)
		{
			currentInt = array[i];
			if (currentInt == what)
			{
				System.out.println("Ersätter " + currentInt + " på position " + i);
				array[i] = with;
			}
		}
	}

	public static void print(int[] array, String msg)
	{

		System.out.println(msg);
		System.out.print("{");
		boolean first = true;
		for (int i = 0; i < array.length; i++)
		{
			if (!first)
			{
				System.out.print(",");
			}
			first = false;
			System.out.print(array[i]);
		}

		System.out.println("} \n---");

	}

}

Lek lite med dessa två klasser så ser du nog hur det funkar.

sadsmileMedlem sedan jan. 2002177 inlägg
#3

Tackar

Tack...skall kolla lite på koden och se om jag förstår något (är ny på det här med Java).

Grejen är den att en array med 81 positioner (eller vad man nu kallar det) och ett värde för varje plats i arrayen skall skickas över till en klass där den skall sparas ner i en fil. Sen så skall det också finnas möjlighet att göra tvärtom, läsa från en fil i en klass och skicka över arrayen till programmets "huvudklass".

126 ms totalt · 3 externa anrop · v20260731065814-full.3292ce1b
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)