Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    4

    Programma java array

    Buongiorno, devo svolgere un esercizio di questo tipo:
    Si legga da console un numero N dispari divisibile per 3, se il numero inserito è corretto si proceda, altrimenti si chieda un nuovo numero fino a che non sia corretto.
    inoltre:
    1- si crei un array di N numeri interi.
    2- si compili l'array di N numeri interi casuali compresi tra 1 ed N.
    3- stampi il minimo e il massimo dei numeri presenti nell'array.
    4- stampi gli eventuali numeri dell'array uguali ad otto più la loro posizione.

    Io ho provato a fare questo ma non funziona bene.....

    codice:
    import java.util.Scanner;
    import java.util.Random;
    public class Esercizio2 {

    public static void main(String[]args){
    Scanner in = new Scanner(System.in);
    Random gen = new Random();
    boolean done = false;
    while(!done){
    System.out.println("inserire numero:");
    int n = in.nextInt();
    if(n%2!= 0 && n%3==0)
    {
    done = true;
    }
    else
    {
    done = false;
    }

    }
    System.out.println("inserire nuovamente il numero di prima per piacere:");
    int a = in.nextInt();
    int[] numeri = new int[a];
    for(int element : numeri)
    {
    element =1+gen.nextInt(a+1);
    }

    int maggiore = numeri[0];
    for(int i = 1 ; i<numeri.length ; i++){
    if(maggiore < numeri[i])
    {
    maggiore = numeri[i];
    System.out.println("il maggiore è:"+maggiore);
    }
    }
    int minore = numeri[0];
    for(int i = 1; i<numeri.length ; i++){
    if(minore > numeri[i])
    {
    minore = numeri[i];
    System.out.println("il minore è:" + minore);
    }
    }
    int otto = 8;
    for(int i=0; i<numeri.length ; i++){
    if(numeri[i] == otto)
    {
    System.out.println("il numero otto è presente nella sequenza ed è in posizione:"+ i);
    }
    else
    {
    System.out.println("il numero non c'è");
    }
    }
    }
    }


    Secondo voi i problemi dove sono?

    Grazie in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    l'errore sta dove fai:

    codice:
    for(int element : numeri) {
    element =1+gen.nextInt(a+1);
    }
    fai un normale ciclo del tipo:

    codice:
    for (int i=0;i<a;i++) {
    numeri [i] = 1+gen.nextInt(a+1);
    }
    Perchè non va bene la prima forma? QUI c'è una guida sulle differenze delle due forme del "for"
    In pratica con la forma da te usata non abbiamo accesso alla struttura dati ma soltanto ai suoi elementi e quindi non puoi assegnare un valore a un qualcosa a cui non puoi accedere , ti sei perso il suo riferimento.

    inoltre ci stanno alcune cose inutili nel tuo codice , ad esempio il reinserimento del numero "N"...chiedilo fino alla convalida ma non salvarlo in una variabile visibile solamente all'interno del while , dichiarala fuori e poi la modifichi all'interno del ciclo...anche alla fine la variabile "otto" è prolissa ,poichè la utilizzi in un unico contesto confronta direttamente con l'intero "8"


  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    4
    ok ho risolto, grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.