8 svar
393 visningar
Signalfel 74 – Fd. Medlem
Postad: 25 sep 2018 01:20

Instansvariabler för arrayer

Hej!

I en uppgift jag håller på med ska jag skapa en klass som gör att man kan skapa diverse arrayer, successivt lägga in värden och göra olika beräkningar på dem. Det första steget är att skapa en klass (check!) och sedan står det såhär:
och sedan en konstruktor som skapar arrayer av en längd som anges då konstruktorn anropas.

Mitt försök:
public class Measurements {

private double[] Array;
private int[] UsedArray;

public Measurements(int m) {
this.Array = new double[m];

}
}

Sedan förstår jag dock inte. Varför behöver man en array för att hålla koll på hur många platser i ens första array som är upptagna? Räcker det inte med en variabel för det? Och vad menar de med sista meningen i instruktionen; "Den senare är 0 från början (utom för konstruktorn som tar emot en array)"? 

Ursäkta om frågan är luddig men jag känner mig ganska lost... 

IGIL 43
Postad: 25 sep 2018 08:16

Så som jag tolkar frågan ska du inte ha en Array med en heltalstyp. Utan du ska ha en variabel av en heltalstyp. Den ska hålla koll på hur många platser i din Array som har en siffra. Ifall din array har 10 platser, men bara 2 används, ska din heltals variabel vara 2.

Yngve 37856 – Livehjälpare
Postad: 25 sep 2018 08:21
Signalfel skrev:

Hej!

I en uppgift jag håller på med ska jag skapa en klass som gör att man kan skapa diverse arrayer, successivt lägga in värden och göra olika beräkningar på dem. Det första steget är att skapa en klass (check!) och sedan står det såhär:
och sedan en konstruktor som skapar arrayer av en längd som anges då konstruktorn anropas.

Mitt försök:
public class Measurements {

private double[] Array;
private int[] UsedArray;

public Measurements(int m) {
this.Array = new double[m];

}
}

Sedan förstår jag dock inte. Varför behöver man en array för att hålla koll på hur många platser i ens första array som är upptagna? Räcker det inte med en variabel för det? Och vad menar de med sista meningen i instruktionen; "Den senare är 0 från början (utom för konstruktorn som tar emot en array)"? 

Ursäkta om frågan är luddig men jag känner mig ganska lost... 

Jo det räcker med en variabel. Du har bara misstolkat instruktionen. Där står det att du dels behöver en instansvariabel som är en array och dels en instansvariabel som är av heltalstyp. Inte en array alltså.

Signalfel 74 – Fd. Medlem
Postad: 25 sep 2018 09:32
IGIL skrev:

Så som jag tolkar frågan ska du inte ha en Array med en heltalstyp. Utan du ska ha en variabel av en heltalstyp. Den ska hålla koll på hur många platser i din Array som har en siffra. Ifall din array har 10 platser, men bara 2 används, ska din heltals variabel vara 2.

 Ah då förstår jag, tack! Och den ska skapas med samma konstruktor som skapar arrayen antar jag? För varje array behöver ha en sådan räknare? 

Yngve 37856 – Livehjälpare
Postad: 25 sep 2018 09:52
Signalfel skrev:
IGIL skrev:

Så som jag tolkar frågan ska du inte ha en Array med en heltalstyp. Utan du ska ha en variabel av en heltalstyp. Den ska hålla koll på hur många platser i din Array som har en siffra. Ifall din array har 10 platser, men bara 2 används, ska din heltals variabel vara 2.

 Ah då förstår jag, tack! Och den ska skapas med samma konstruktor som skapar arrayen antar jag? För varje array behöver ha en sådan räknare? 

 Ja.

Signalfel 74 – Fd. Medlem
Postad: 25 sep 2018 10:01
Yngve skrev:
Signalfel skrev:
IGIL skrev:

Så som jag tolkar frågan ska du inte ha en Array med en heltalstyp. Utan du ska ha en variabel av en heltalstyp. Den ska hålla koll på hur många platser i din Array som har en siffra. Ifall din array har 10 platser, men bara 2 används, ska din heltals variabel vara 2.

 Ah då förstår jag, tack! Och den ska skapas med samma konstruktor som skapar arrayen antar jag? För varje array behöver ha en sådan räknare? 

 Ja.

 Tack :) Såhär?

public class Measurements {

private double[] Array;
private int UsedArray;

public Measurements(int m) {
this.Array = new double[m];
this.UsedArray = 0
int index = 0;
while (index < this.Array.length) {
if this.Array[index] = 0 {
index++
} else {
UsedArray++
index++
}

}
}

Men jag tänker att det blir ju fel ifall man vill att något värde i arrayen faktiskt ska vara 0?

Yngve 37856 – Livehjälpare
Postad: 25 sep 2018 10:16
Signalfel skrev:
Yngve skrev:
Signalfel skrev:
IGIL skrev:

Så som jag tolkar frågan ska du inte ha en Array med en heltalstyp. Utan du ska ha en variabel av en heltalstyp. Den ska hålla koll på hur många platser i din Array som har en siffra. Ifall din array har 10 platser, men bara 2 används, ska din heltals variabel vara 2.

 Ah då förstår jag, tack! Och den ska skapas med samma konstruktor som skapar arrayen antar jag? För varje array behöver ha en sådan räknare? 

 Ja.

 Tack :) Såhär?

public class Measurements {

private double[] Array;
private int UsedArray;

public Measurements(int m) {
this.Array = new double[m];
this.UsedArray = 0
int index = 0;
while (index < this.Array.length) {
if this.Array[index] = 0 {
index++
} else {
UsedArray++
index++
}

}
}

Men jag tänker att det blir ju fel ifall man vill att något värde i arrayen faktiskt ska vara 0?

Nu kan ju jag inte Java, men det ser som om din konstruktor tar ett heltal och inte en array som argument. Sen bör det ju gå att lagra talet 0 i arrayen så du bör inte ha en if-sats där överhuvud taget. Att sätta rätt värde på UsedArray kan du ju åstadkomma genom att helt enkelt tilldela variabeln värdet av arrayens längd om du känmer till den.

Signalfel 74 – Fd. Medlem
Postad: 25 sep 2018 17:19 Redigerad: 25 sep 2018 17:19
Yngve skrev:
Signalfel skrev:
Yngve skrev:
Signalfel skrev:
IGIL skrev:

Så som jag tolkar frågan ska du inte ha en Array med en heltalstyp. Utan du ska ha en variabel av en heltalstyp. Den ska hålla koll på hur många platser i din Array som har en siffra. Ifall din array har 10 platser, men bara 2 används, ska din heltals variabel vara 2.

 Ah då förstår jag, tack! Och den ska skapas med samma konstruktor som skapar arrayen antar jag? För varje array behöver ha en sådan räknare? 

 Ja.

 Tack :) Såhär?

public class Measurements {

private double[] Array;
private int UsedArray;

public Measurements(int m) {
this.Array = new double[m];
this.UsedArray = 0
int index = 0;
while (index < this.Array.length) {
if this.Array[index] = 0 {
index++
} else {
UsedArray++
index++
}

}
}

Men jag tänker att det blir ju fel ifall man vill att något värde i arrayen faktiskt ska vara 0?

Nu kan ju jag inte Java, men det ser som om din konstruktor tar ett heltal och inte en array som argument. Sen bör det ju gå att lagra talet 0 i arrayen så du bör inte ha en if-sats där överhuvud taget. Att sätta rätt värde på UsedArray kan du ju åstadkomma genom att helt enkelt tilldela variabeln värdet av arrayens längd om du känmer till den.


 Problemet är att klassen ska innehålla en metod för att skapa tomma arrayer som man kan sedan kan fylla på, och att det då ska finnas en instansvariabel som håller koll på hur många positioner i varje array som tilldelats ett värde

medoz 14 – Fd. Medlem
Postad: 26 sep 2018 00:02

Du har ju din UsedArray som säger hur många platser som används i din Array. Från början kommer denna vara 0 då när du skapar klassen så kommer din Array att vara tom. Sen kan du skapa en metod för klassen som heter add(double n) som lägger till ett värde n till din Array successivt, och varje gång du kallar på add så inkrementerar du UsedArray.

Svara Avbryt
Close