Osaako joku auttaa miten sais ohjelman toimimaan mikä tässä mättää ?
ohjelman täytyy kysyä lukuja jos käyttäjä syöttää 9999 niin ohjelma täytyy tulostaa pienimmän luvun indeksin.
import java.util.ArrayList;
import java.util.Scanner;
public class PienimmanLuvunIndeksi {
public static void main(String[] args) {
Scanner lukija = new Scanner(System.in);
int paikka = 0;
ArrayList<Integer> lista = new ArrayList<>();
while (true) {
int luettu = Integer.parseInt(lukija.nextLine());
if (luettu == 9999) {
break;
}
lista.add(luettu);
}
int pienin =lista.get(0);
int index = 0;
while (index < lista.size()) {
int luku = lista.get(index);
if (pienin < luku) {
pienin = luku;
}
index++;
}
while (lista.get(index) == pienin) {
System.out.println("Pienin luku on " + pienin);
System.out.println("Pienin luku löytyy indeksistä " + index);
}
}
}No ihan periaatteessa lähtis varmaan toimimaan jos käyttäisit tallettaisit sen pienimmän indeksin muuttujan paikka, jonka olet määritellyt, mutta et käytä sitä lainkaan. Tuon pienin = luku; kaveriksi voisit laittaa paikka = index; ja sit tulostuskohdasta turha while pois ja tulostat sen tuolla ..löytyyn indeksistä... rivillä.
Sinänsähän tuossa on tehtävänantoon nähden ihna turhaa tuon arraylistin käyttö...
import java.util.Scanner;
public class PienimmanLuvunIndeksi {
public static void main(String[] args) {
Scanner lukija = new Scanner(System.in);
int paikka = 0;
int pienin = Integer.MAX_VALUE;
for (int i=0; ;i++) {
int luettu = Integer.parseInt(lukija.nextLine());
if (luettu == 9999) {
break;
}
if (luettu < pienin) {
pienin = luettu;
paikka = i;
}
}
System.out.println("Pienin luku on " + pienin);
System.out.println("Pienin luku löytyy indeksistä " + paikka);
}
}Kiitos paljon avustasi !
voit myös käyttää javan streamejä asian selvittämiseen listasta:
import static java.util.Comparator.comparingInt;
import java.util.ArrayList;
import java.util.stream.IntStream;
import java.util.Scanner;
public class test
{
public static void main(String[] args)
{
Scanner lukija = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<Integer>();
while(true)
{
int newValue = Integer.parseInt(lukija.nextLine());
if (newValue == 9999) {
break;
}
else {
list.add(newValue);
}
}
int minIndex = IntStream.range(0,list.size()).boxed().min(comparingInt(list::get)).get();
int minValue = list.stream().min(Integer::compare).get();
System.out.println("pienin arvo: " + minValue);
System.out.println("pienimmän arvon indeksi: " + minIndex);
}
}Aihe on jo aika vanha, joten et voi enää vastata siihen.