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...
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å.
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.
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.
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
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.