2017-03-11 2 views
0

오늘 저는 이전 Java 연습 중 하나를 리팩토링하는 중입니다.문자열을 반복하고 여러 변수로 작동하는 Java 루프 구조

사용자가 숫자를 입력하도록 요구하는 간단한 추가 프로그램처럼 입력 한 다음 모든 숫자의 합계를 반환합니다.

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)); 

    } 

} 

과거에는 대부분 내 프로그램의 논리가 내 주된 방법이었습니다. 오늘은 메인에 만큼의 라인을 가지고 있고, 다른 방법으로는 많은 로직을 패키지하는 것이 목표였습니다.

난 아직도 그때의 매개 변수로 사용됩니다 g을 통해 변수 A (값을 설정하는 내 getDoubleInput 방법을 사용하여 주에서 여러 라인을 가지고 내 "추가"하는 방법.

싶습니다

가 변경 나는 자바에서이를 구현하는 방법의 예를 찾을 수없는, 그러나

#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"); 

난 단지 numericalvalues을 반복 보았다 루프의 대부분을 :.이 블록은 다음과 같이 작동합니다 루프 아마도 뭔가를 사용합니다. 정의 된 문자열 집합이 아닙니다.

A : 문자열을 반복하고 B : 두 개의 변수를 사용할 수있는 루프 구조를 아는 사람이 있습니까?

답변

1

adds 메서드가 없습니다. 그냥 평범한 구식을 사용하십시오. 목록에서 제목을 넣어 것을 반복 :

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

잘 처리되었습니다. 감사! – dchardin

0

이 시도 : 수정 후

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)); 

을 그리고 것은 목록을 받아 추가합니다.

+0

또한 잘 작동했습니다. 할 일이 배열을 사용하는 것 같습니다! – dchardin