2017-10-20 7 views
-9

Lorsque je tape ce code que je reçois comme réponse 58,18Ce code ne fonctionne pas

public class text { 

    public static void main(String[] args) { 
     //Data Array 
     double data[]={19.2,22.3,32.51,39,41.16,49.46,55.91,58.18}; 

     //Finding minimum angle 
     double minimum_angle=0; 
     for(int counter=0;counter<data.length;counter++){ 

      if(data[counter]<data[counter++]){ 
       minimum_angle=data[counter]; 
      } 
      else {minimum_angle=data[counter++];} 
     } 
     System.out.print(minimum_angle); 




    } 

} 

Mais quand je tape la même chose avec une petite modification que je reçois 55,91. Pourquoi est-ce vrai?

public class Main_class { 
    public static void main(String args[]){ 

     //Data Array 
     double data[]={19.2,22.3,32.51,39,41.16,49.46,55.91,58.18}; 

     //Finding minimum angle 
     double minimum_angle=0; 
     for(int counter=0;counter<data.length;counter++){ 
      double x=data[counter]; 
      double y=data[counter++]; 
      if(x<y){ 
       minimum_angle=x; 
      } 
      else { 
       minimum_angle=y; 
      } 
     } 
     System.out.print(minimum_angle); 
    } 
+1

1) Vous êtes clairement en train de mentir: le code * fonctionne *. 2) Quelle est la "petite différence"? Ne faites pas peindre votre public à travers votre code. – kryger

+0

Si vous appelez 'counter ++' deux fois, vous augmentez' counter' de deux – khelwood

+4

C'est parce que votre algorithme ne fait pas ce qu'il est censé faire. Arrêtez d'utiliser ++. Arrêtez de comparer un élément avec le suivant. Comparez chaque élément au minimum actuel. –

Répondre

3

Vos deux extraits sont incorrects.

Vous utilisez abusivement l'opérateur post-incrément.

if(data[counter]<data[counter++]) 

ne sera jamais vraie, tout comme

if(data[counter]<data[counter]) 

ne sera jamais vrai.

L'opérateur post-incrément renvoie la valeur d'origine de la variable incrémentée. Il n'est pas clair pourquoi vous incrémentez le compteur dans le corps de la boucle, quoi qu'il en soit. Vous ne devez l'incrémenter que dans l'instruction for. Et pour trouver le minimum, vous devez comparer data[counter] à minimum_angle:

double minimum_angle = Double.MAX_VALUE; 
for(int counter = 0; counter < data.length; counter++) { 
    if(data[counter] < minimum_angle) { 
     minimum_angle = data[counter]; 
    } 
} 
0
public class text { 

public static void main(String[] args) { 
    //Data Array 
    double data[] = {19.2,22.3,32.51,39,41.16,49.46,55.91,58.18}; 

    //Finding minimum angle 
    double minimum_angle = data[0]; 
    for(int counter = 1;counter < data.length;counter ++){ 

     if(minimum_angle < data[counter]){ 
      minimum_angle = data[counter]; 
     } 
    } 
    System.out.print(minimum_angle); 




} 

} 

Initialiser minimum_angle avec des données [0] et comparer minimum_angle avec tableau de données à partir de l'index 1. Si minimum_angle est inférieur à données [index ] value puis assigne minimum_angle à data [index] pour obtenir la valeur double minimum d'un tableau.

0

On dirait que vous débutez en programmation. En tout cas, essayez le code ci-dessous.

double data[]={19.2,22.3,32.51,39,41.16,49.46,55.91,58.18}; 

    double minimum_angle=data[0]; 
    for(int counter=0;counter<data.length;counter++) 
     if(minimum_angle < data[counter]) 
      minimum_angle = data[counter]; 

    System.out.print(minimum_angle); 
+0

On dirait que vous êtes nouveau sur Stack Overflow. Réparer le code de l'OP sans un mot d'explication ou expliquer ce qu'ils ont mal fait (surtout dans une question comme celle-ci) n'est pas considéré comme une bonne réponse. – kryger

+0

Il y avait beaucoup d'erreurs, donc je l'ai expliqué. Mais à partir de la prochaine fois si je réponds je donnerai avec une explication. Je vous remercie. – bnayagrawal