Vinnaren i pepparkakshustävlingen!
2016-06-30, 17:20
  #1
Medlem
Tjena!

Sitter fast med en basic array-funktion, fortsätter att få error "array index out of bounds exception"

Så här ser koden ut: http://imgur.com/amtezPn

Får ett error på rad 17, har jämfört med andra lösningar på internet och min verkar se liknande ut.
Citera
2016-06-30, 17:43
  #2
Moderator
Protons avatar
Citat:
Ursprungligen postat av zodsters
Tjena!

Sitter fast med en basic array-funktion, fortsätter att få error "array index out of bounds exception"

Så här ser koden ut: http://imgur.com/amtezPn

Får ett error på rad 17, har jämfört med andra lösningar på internet och min verkar se liknande ut.
Vilken jävla röra...

Din array array kommer endast innehålla ett element, men däremot vill du loopa igenom den 50 gånger. Där uppstår problemet.

Vad är det programmet ska göra egentligen? Ä*r det meningen att du ska bygga nån egen bubblesort eller så?

Du har troligen fintat bort dig själv på den yttre loopen i sådana fall, eftersom den innesluter hela programmet. Om du i ord först skulle beskriva din algoritm och sedan jämföra den med koden kommer det troligen bli lättare. Är det till exempel inte meningen att du ska ladda arrayen med 50 slumptal för att sedan sortera den? Det sker inte med den kod som du har nu.
Citera
2016-06-30, 19:15
  #3
Medlem
Jag har inte ens en susning om vad koden ska göra men jag rekommenderar att du använder arraylist istället för array då arraylist är mycket enklare att jobba med.
Citera
2016-06-30, 19:16
  #4
Medlem
Citat:
Ursprungligen postat av Proton
Vilken jävla röra...

Din array array kommer endast innehålla ett element, men däremot vill du loopa igenom den 50 gånger. Där uppstår problemet.

Vad är det programmet ska göra egentligen? Ä*r det meningen att du ska bygga nån egen bubblesort eller så?

Du har troligen fintat bort dig själv på den yttre loopen i sådana fall, eftersom den innesluter hela programmet. Om du i ord först skulle beskriva din algoritm och sedan jämföra den med koden kommer det troligen bli lättare. Är det till exempel inte meningen att du ska ladda arrayen med 50 slumptal för att sedan sortera den? Det sker inte med den kod som du har nu.

haha, kan man nog säga, tror jag tog några steg för mycket i taget.

Precis, jag ska ladda arrayen med 50 slumptal, sedan sortera dem och printa ut det högsta och minsta värdet
Citera
2016-06-30, 19:24
  #5
Medlem
Citat:
Ursprungligen postat av zodsters
haha, kan man nog säga, tror jag tog några steg för mycket i taget.

Precis, jag ska ladda arrayen med 50 slumptal, sedan sortera dem och printa ut det högsta och minsta värdet

Du behöver inte sortera arrayen för att hitta största och minsta talet

Det här var som någon tidigare sade ett härke! jag menar du skapar en array 50 gånger, och sedan försöker på dig nån sort på varje skapad array (som i sin tur inte används alls, utan hamnar hos garbage collector efter varje iteration )

Ok jag förstår att du läser en grundkurs i Java på nått universitet uppenbarligen, sommarkurs? Men lite hjärna får man väl lägga in vafan.

För övrigt kan du hitta största och minsta värdet genom att gå igenom hela arrayen endast en gång.
__________________
Senast redigerad av PG-k 2016-06-30 kl. 19:30.
Citera
2016-06-30, 19:36
  #6
Medlem
Citat:
Ursprungligen postat av PG-k
Du behöver inte sortera arrayen för att hitta största och minsta talet

Det här var som någon tidigare sade ett härke! jag menar du skapar en array 50 gånger, och sedan försöker på dig nån sort på varje skapad array (som i sin tur inte används alls, utan hamnar hos garbage collector efter varje iteration )

Ok jag förstår att du läser en grundkurs i Java på nått universitet uppenbarligen, sommarkurs? Men lite hjärna får man väl lägga in vafan.

För övrigt kan du hitta största och minsta värdet genom att gå igenom hela arrayen endast en gång.

Tack för hjälpen?
Citera
2016-06-30, 19:38
  #7
Medlem
Löste det för övrigt men tack för svar!
Citera
2016-06-30, 19:38
  #8
Medlem
Citat:
Ursprungligen postat av zodsters
Tack för hjälpen?

1, jag sade att du inte behöver sortera arrayen
2, jag sade att du bara behöver iterera över arrayen 1 gång?

är inte det lite hjälp?... programmet behöver inte ha fler än 10 rader
Citera
2016-06-30, 19:56
  #9
Medlem
Kod:
import java.util.ArrayList;

public class 
Uppgift1
{
    public static 
void main(String[] args)
    {
        
ArrayList<Integerarr = new ArrayList<>(); 
        
        for(
int i 050i++)
            
arr.add( (int)(Math.random() * 20 1) );
        
        
int max 0,min 20;
        
        for(
Integer narr){
            if(
n>max)
            
max n;
            if(
n<min)
            
min=n;
        }
        
        
System.out.format("Max=%d\nMin=%d"max,min);    
    }

Citera
2016-07-01, 15:11
  #10
Medlem
lasternassummas avatar
Det kanske var en förutsättning i uppgiften att man
skulle använda en array, men det behövs ju ingen
array för att beräkna min och max av ett antal
slumptal.
Jag kör 100 000 000 i stället och ökar intervallet till
0 - 999 999 999.
Jag lade till beräkning av medelvärdet.

Kod:
public class Uppgift1b
{ 
    public static void main(String[] args) 
    { 
        int min = 1000000000, max = 0, numOfRnds = 100000000;
        long sum = 0;
        for(int i = 0; i < numOfRnds; i++) {
            int rndNum = (int)(Math.random() * 1000000000); 
            if(rndNum<min) min = rndNum;
            if(rndNum>max) max = rndNum;
            sum = sum + (long) rndNum;
        }
        double ave = (double) sum / (double) numOfRnds;
        System.out.format("\nMin=%d\nMax=%d\nAve=%.2f", min, max, ave);     
    }
}

Med stora datamängder, så kan det vara stor skillnad beroende
på om man väljer att lagra data eller inte. Att lagra 100 000 000
heltal med 4 byte vardera tar ca 400 Mbyte eller ca 0,4 Gbyte.
Om man t.ex. bara behöver min, max och medelvärde så kan
det beräknas utan att data lagras.
Tänk också på att största int (4 byte) i Java är 2 147 483 647.
Om man använder int för sum ovan så blir det fel.

__________________
Senast redigerad av lasternassumma 2016-07-01 kl. 15:15.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback