Mám program na prácu s poľom ale niektoré metódy zle pracujú. Program obsahuje generátor (pseudo)náhodných čísel, s tým, že user zadá koľko prvkové pole to má byť a po aké číslo sa majú čísla generovať. Potom tam mám metódu ktorá čísla vypíše v opačnom poradí ako sú vygenerované, lenže niekde tam mám chybu kvôli ktorej sú čísla zoradené nesprávne. Potom tam mám metódu, ktorá by mala zoradiť vygenerované čísla od najmenšieho po najväčšie, lenže ani to nefunguje správne. A mám tam aj metódu ktorá by mala vypočítať priemer čísel, ale aj tam som spravil nejakú chybu, lebo ako priemer je vždy uvedená nesprávna hodnota. Takže aby som to zhrnul, nasledovné metódy nefungujú ako by som chcel:
- avg()
- bubbleSort()
- reverse()
- selectSort()
Mohol by mi niekto poradiť kde mám chybu v tých metódach? PS: tých metód je tam viacej ale tie ostatné fungujú správne.
Zdroják:
Kód: Vybrať všetko
import java.util.*;
public class IntegerArray
{
private int [] array;
private int n;
public IntegerArray(int n)
{
array = new int[n];
this.n=n;
}
public void put(int index,int value)
{
array [index]=value;
}
public int get(int index)
{
return array[index];
}
public boolean includes(int value)
{
for(int i=0;i<n;i++)
if(array[i]==value)
return true;
return false;
}
public int indexOf(int value)
{
for(int i=0;i<n;i++)
if(array[i]==value)
return i;
return -1;
}
public int lastindexOf(int value)
{
for(int i=n-1;i<0;i--)
if(array[i]==value)
return i;
return -1;
}
public double avg()//vypocita priemer cisel - nefunguje spravne
{
return sum()/((double)n);
}
public int sum()//spocita sumu cisel
{
int sum=0;
for(int i=0;i<n;i++)
sum+=array[i];
return sum;
}
public int max()//navrati maximalnu hodnotu v poli
{
int m=array[0];
for(int i=1;i<n;i++)
if(array[i]>m)
m=array[i];
return m;
}
public int min()//navrati minimalnu hodnotu
{
int m=array[0];
for(int i=1;i<n;i++)
if(array[i]<m)
m=array[i];
return m;
}
public String toString()//vypise cisla do Stringu
{
String s="";
for(int i=1;i<n;i++)
s=s+array[i]+" ";
return s;
}
public void generate(int max)//generuje cisla po zadanu hodnotu
{
Random rnd = new Random();
for(int i=0;i<n;i++)
array[i]=rnd.nextInt(max);
}
public boolean isSymetric()//vypise ci je pole symetricke
{
for(int i=0;i<=(n/2);i++)
{
if(array[i]!=array[n-i-1])
return false;
}
return true;
}
public void reverse()//zoradi cisla od posledneho po prve - nefunguje spravne
{
for(int i=0;i<(n/2);i++)
{
int c=array[i];
array[i]=array[n-i-1];
array[n-i-1]=c;
}
}
public void ukaz()//metoda na vypis cisel do konzoly
{
System.out.println(this);
}
public void selectSort()//zoradovanie selectSort()
{
for(int j=0;j<n-1;j++)
{
int m=array[j];
int mpos=j;
for(int i=j;i<n;i++)
if(m>array[i])
{
m=array[j];
mpos=j;
}
int c=array[j];
array[j]=array[mpos];
array[mpos]=c;
}
}
public void bubbleSort()//zoradovanie bubbleSort - nefunguje spravne
{
boolean swap=false;
do
{
swap=false;
for(int i=0;i<(n-1);i++)
if(array[i]>array[i+1])
{
int c=array[i];
array[i]=array[i+1];
array[i+1]=c;
swap=true;
}
}while(swap);
}
}