2017-10-10 7 views
-2

Je devrais calculer les racines et les carrés des nombres premiers donnés dans un tableau.Utilisation pour les tableaux en boucle

Les résultats doivent être stockés dans deux nouveaux tableaux. Ma solution a été:

import java.util.Arrays; 
import java.lang.Math; 

public class Array1 {  
    public static void main(String[] args) { 
     double[] primeNumbers = {3, 5, 7, 11, 13, 17}; 
     for (int i = 0; i < primeNumbers.length-1; i++) { 
      double[] root = new double[primeNumbers.length-1]; 
      root[i] = Math.sqrt(primeNumbers[i]); 
      if (i == primeNumbers.length-2) { 
       System.out.println(Arrays.toString(root)); 
      } 
     } 

     for (int i = 0; i < primeNumbers.length-1; i++) { 
      double[] square = new double[primeNumbers.length-1]; 
      square[i] = primeNumbers[i] * primeNumbers[i]; 
      if (i == primeNumbers.length-2) { 
       System.out.println(Arrays.toString(square)); 
      } 
     } 
    } 
} 

Unfortunatelly, le résultat de ma solution est:

[0.0, 0.0, 0.0, 0.0, 3.605551275463989] 

[0.0, 0.0, 0.0, 0.0, 169.0] 

S'il vous plaît aidez-moi ici.

+0

Lorsque vous posez des questions liées au code, vous devez ajouter une balise à la question indiquant ce langage de programmation le code est en – crashmstr

+0

'deux [] root = nouveau double [primeNumbers.length-1]; 'vous créez un nouveau tableau à chaque itération. Peut-être que c'est votre problème. Prenez le [tour], parcourez [help], lisez [ask], essayez d'apprendre à utiliser un débogueur aussi. – Frakcool

+0

Etes-vous obligé de stocker les carrés et les racines dans les tableaux, ou simplement les imprimer? Aussi, pourquoi n'imprimez-vous que pour i == primeNumbers.length-2? – DodgyCodeException

Répondre

0

Vous déclarez les tableaux de sortie à l'intérieur des boucles for. Essayez-les déclarer en dehors de la boucle comme ceci:.

double[] root = new double[primeNumbers.length-1]; 
for (int i = 0; i < primeNumbers.length-1; i++) { 

    root[i] = Math.sqrt(primeNumbers[i]); 
    if (i == primeNumbers.length-2) { 
     System.out.println(Arrays.toString(root)); 
    } 
} 
double[] square = new double[primeNumbers.length-1]; 
for (int i = 0; i < primeNumbers.length-1; i++) { 

    square[i] = primeNumbers[i] * primeNumbers[i]; 
    if (i == primeNumbers.length-2) { 
     System.out.println(Arrays.toString(square)); 
    } 
} 
+0

Pourquoi ignorons-nous le dernier élément du tableau (je sais que c'est ce que le PO fait, mais votre solution le fait aussi). – DodgyCodeException

+0

Je suppose que je ne suis pas sûr de savoir pourquoi OP a fait cela. Je suis d'accord que c'est bizarre. – MisterMystery