Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Pienimmän luvun indeksi

f3rnand [07.12.2017 09:42:59]

#

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);

        }
    }
}

Grez [07.12.2017 11:07:25]

#

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);
    }
}

f3rnand [07.12.2017 15:16:46]

#

Kiitos paljon avustasi !

groovyb [08.12.2017 14:42:13]

#

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);
  }
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta