/** * classe didattica che illustra l'uso degli array * * acquisisce un numero generico di valori in virgola mobile da standard input, * acquisisce successivamente un indice intero k compreso fra 0 e 9, inviando a * standard output il valore acquisito di indice k. * * ridimensiona dinamicamente l'array in caso di superamento dei limiti dell'array. * * @author Adriano Luchetta * @version 25-Ott-2006 */ import java.util.Scanner; import java.util.Locale; public class SelectValue4 { public static void main(String[] args) { final int ARRAY_LENGTH = 3; final String END_OF_DATA = ""; //Sentinella Scanner in = new Scanner(System.in); in.useLocale(Locale.US); System.out.println("Inserisci i numeri, uno per riga"); double[] values = new double[ARRAY_LENGTH]; int valuesSize = 0; while (in.hasNextLine()) // un numero per riga { String token = in.nextLine(); if (token.equals(END_OF_DATA)) break; // ridimensionamento dinamico if (valuesSize >= values.length) { //definiamo un nuovo array di dim. doppia double[] newValues = new double[2 * values.length]; // ricopiamo gli elementi nel nuovo array for (int i = 0; i < values.length; i++) newValues[i] = values[i]; //assegniamo a value il riferimento a newValue values = newValues; // valuesSize non cambia } values[valuesSize] = Double.parseDouble(token); valuesSize++; } System.out.print("Inserisci un indice: "); int index = in.nextInt(); if (index < 0 || index >= values.length) System.out.println("Valore errato"); else System.out.println("valore: " + values[index]); in.close(); } }