8 svar
84 visningar
Signalfel 82
Postad: 24 sep 2018

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 65
Postad: 25 sep 2018

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.

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 82
Postad: 25 sep 2018
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? 

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 82
Postad: 25 sep 2018
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?

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 82
Postad: 25 sep 2018 Redigerad: 25 sep 2018
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 18
Postad: 25 sep 2018

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