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.