è il mio primo post in modo da DO stomp me se ho scritto qualcosa di stupido.Elenco dei divisori di un numero
Ho appena iniziato classi IT, e oggi su "mentre" loop classe il mio tutor ci ha dato il seguente lavoro:
Scrivere un programma che legge un numero n e visualizza naturale in una scatola grafica all i suoi divisori dall'intervallo [2; n-1].
Finora mi si avvicinò con un codice che funziona, ma il risultato è un torto po ':
import java.util.Arrays;
import javax.swing.JOptionPane;
public class Divisors {
public static void main(String[] args) {
String n = JOptionPane.showInputDialog(null, "Enter a natural number");
Integer i = Integer.parseInt(n);
int d = i - 1;
int x = 2;
int[] dvr = new int[i]; // [i] because bigger numbers need more iterations
while (x >= 2 && x <= d) {
double y = i % x;
if (y == 0) {
dvr[x] = x;
x = x + 1;
} else {
x = x + 1;
}
}
JOptionPane.showMessageDialog(null, "The divisors of " + i + " are:\n" + Arrays.toString(dvr));
}
}
Il problema è che il ciclo si riempie la matrice con un sacco di zeri, e lo screenshot i risultati del tutor mostrano una finestra che elenca solo i divisori.
Ho provato a farlo con ArrayList, ma questa è magia nera per me in questo momento e il mio tutor non ci ha ancora insegnato come utilizzare qualsiasi cosa, al di là delle cose usate nel mio codice.
Qualsiasi aiuto molto apprezzato.
In realtà, l'array è inizializzato a tutti gli zeri al momento della creazione, il ciclo non si sta riempiendo in su con gli zeri . – azurefrog
Il tuo problema è con dvr [x] = x; Non vuoi impostare il valore del divisore alla posizione x. È necessaria una seconda variabile da indicizzare nell'array che si incrementa solo dopo ogni divisore aggiunto. – bhspencer
@bhspencer ma ho ancora un numero predeterminato di slot nell'array – Shamanix