2017-03-11 2 views
0

Aujourd'hui, je travaille sur la refactorisation d'un de mes anciens exercices java.Java structure de boucle qui itère sur les chaînes et travaille avec plusieurs variables

C'est un simple programme d'addition qui demande à un utilisateur d'entrer des nombres, puis retourne la somme de tous les nombres entrés.

package methodparametertest; 

import java.util.Scanner; 

public class MethodParameterTest { 

    public static double adds(double a, double b, double c, double d, double e, 
      double f, double g) { 

     double sum = a + b + c + d + e + f + g; 

     return sum; 

    } 

    public static double getDoubleInput(String valueWanted) { 

     Scanner input = new Scanner(System.in); 

     String askFor = valueWanted; 

     System.out.println("Please enter a positive integer or decimal value" 
       + "for your numnber of "+askFor); 

     double valueGiven = input.nextDouble(); 

     return valueGiven; 

    } 

    public static void main(String[] args) { 

     double a = getDoubleInput("passengers"); 
     double b = getDoubleInput("odometer_miles"); 
     double c = getDoubleInput("fuel_gallons"); 
     double d = getDoubleInput("miles_per_gallon"); 
     double e = getDoubleInput("seats"); 
     double f = getDoubleInput("wheels"); 
     double g = getDoubleInput("lights"); 


     System.out.println("Your total number of things: " +adds(a,b,c,d,e,f,g)); 

    } 

} 

Dans le passé, la majeure partie de la logique de mon programme était dans ma méthode principale. Je me suis fait aujourd'hui mon objectif d'avoir aussi peu de lignes que possible dans le principal, et d'empaqueter autant de logique que possible dans des méthodes séparées.

J'ai encore plusieurs lignes principales qui utilisent ma méthode de getDoubleInput pour définir les valeurs des variables a à g (qui seront ensuite utilisés comme paramètres pour mon « ajoute » méthode.

Je voudrais de modifier ce bloc et d'utiliser une boucle peut-être quelque chose qui fonctionnerait comme ceci:.

#Shell-like pseudocode 

For i in (a b c d e f g) 
For j in ("passengers", "odometer miles", "fuel gallons", "miles_per_gallon", "seats", "wheels", "lights"); 

do 

double $i = getDoubleInput($j); 

done 

//OUTPUT 

//  double a = getDoubleInput("passengers"); 
//  double b = getDoubleInput("odometer miles"); 
//  double c = getDoubleInput("fuel gallons"); 
//  double d = getDoubleInput("miles_per_gallon"); 
//  double e = getDoubleInput("seats"); 
//  double f = getDoubleInput("wheels"); 
//  double g = getDoubleInput("lights"); 

Cependant, je ne peux pas trouver un exemple de la façon de mettre en œuvre ce en java la plupart des boucles que j'ai vu que itérer sur numericalvalues,. pas un ensemble défini de chaînes

Est-ce que quelqu'un sait d'une structure de boucle qui pourrait A: itérer sur les chaînes, et B: travailler avec deux variables?

Répondre

1

Ne pas avoir une méthode adds; utilisez simplement une vieille addition. Mettez les titres dans une liste et itérer que:

double sum = 0; 
for (String title : Arrays.asList("passengers", "odometer miles", ...)) { 
    sum += getDoubleInput(title); 
} 
System.out.println("Your total number of things: " + sum); 
+0

A travaillé bien. Merci! – dchardin

0

Essayez ceci:

String[] strArray = Arrasy.asList(new String[] {"passengers", "odometer miles", "fuel gallons", "miles_per_gallon", "seats", "wheels", "lights"}); 

List<Integer> list = new ArrayList<>(); 
for (String str: strArray) { 
    list.add(getDoubleInput(str)); 
} 

System.out.println("Your total number of things: " +adds(list)); 

Et puis modifier ajoute à accepter des listes.

+0

Aussi bien travaillé. ressemble à l'utilisation d'un tableau est la chose à faire! – dchardin