2009-11-25 4 views
0
public class MatrixMultiply{ 

    public static void main(String[] args) { 
     main(); 
    } 


    static void main() { 
     int[] vec = { 1, 2, 3, 4, 5 }; 
     System.out.println(mean(vec)); 
    } 

    static int mean(int[] v) { 
     int total = 0; 

     for (int i = 0 ; i < v.length ; i++) { 
      total = total + v[i]; 
     } 
     return total/v.length; 
    } 
} 

위 작업은 가능하지만 "int [] vec = {1, 2, 3, 4, 5};"자바 배열 - 문자열을 공백으로 배열로 변환

String w = "1 2 3 4 5"; 

다음 w의 평균을 해결 : 내가 좋아하는 뭔가를 만들려고합니다. 어떻게하면 승부를 잡을 수 있을까요?

답변

8

, 난 당신이 w.split ("")로 foreach 문을 사용해야합니다 같아요; 및 Integer.parseInt(); like :

double sum=0; 

for(String str : w.split(" ")) { 
    sum += Integer.parseInt(str); 
} 

return sum/w.split(" ").length; 

편집 : 정수 부분뿐만 아니라 분수로 실제 결과를 유지하기 위해 double sum과 대체 된 int sum을 대체했습니다.

7

java.util.Scanner를 살펴보십시오. (단지 내 머리 위로 떨어져 테스트하지) 같은

뭔가 :

Scanner scanner; 

scanner = new Scanner("1 2 3 4 5 6"); 

while(scanner.hasNextInt()) 
{ 
    final int x; 

    x = scanner.nextInt(); 
    total += x; 
} 

프로그램을 위해 내가 할 것 :

수입 인 java.util.ArrayList를; import java.util.List; 가져 오기 java.util.Scanner;

공용 클래스 메인 { 공공 정적 무효 메인 (최종 문자열 []는 argv) { 최종 INT [] VEC; final float meanValue;

vec  = toIntArray("1 2 3 4 5 6"); 
    meanValue = mean(vec); 

    System.out.println("mean = " + meanValue); 
} 

private static float mean(final int[] vec) 
{ 
    int total = 0; 

    for(final int val : vec) 
    { 
     total += val; 
    } 

    return ((float)total)/((float)vec.length); 
} 


private static int[] toIntArray(final String value) 
{ 
    final Scanner  scanner; 
    final List<Integer> list; 
    final int[]   vec; 

    scanner = new Scanner(value); 
    list = new ArrayList<Integer>(); 

    while(scanner.hasNextInt()) 
    { 
     final int val; 

     val = scanner.nextInt(); 
     list.add(val); 
    } 

    vec = new int[list.size()]; 

    for(int i = 0; i < list.size(); i++) 
    { 
     vec[i] = list.get(i); 
    } 

    return (vec); 
} 

}

+0

+1 : 나는 스캐너에 String을 사용하는 생성자가 있다는 것을 알지 못했습니다. – Powerlord

+0

고마워요 : D 저는 멍청한 데, 이것을 구현하는 데 약간의 어려움을 겪고 있습니다. 정확히 어떻게 그렇게 할 수 있을까요? – Sven

3

당신은 자바의 StringTokenizer 사용할 수 있습니다 - 정수로 처리하는 개별 토큰 다음 Integer 클래스를 얻을 클래스를.

죄송합니다. 대신 .split을 사용하십시오. 은 API 문서에서

: 당신이 번호는 공백으로 구분되어 있는지 확인하는 경우

StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead. 
+0

"StringTokenizer는 새로운 코드에서 사용을 권장하지 않지만 호환성 이유로 보존되는 레거시 클래스이므로이 기능을 사용하려는 사람은 String의 split 메서드 나 java.util.regex 패키지를 대신 사용하는 것이 좋습니다." – Powerlord

+0

감사합니다. 나는 그걸 워드 프로세서에서 읽고 대답을 편집하고 있었다. – hexium

1
string.split(" ").map(_.toInt) sum 

오 죄송합니다. 스칼라입니다. 자바가있다!

String[] arr = string.split(" ") 
int sum = 0; 
for (s : arr) sum += Integer.parseInt(s); 
+0

많은 감사 oxbow_lakes :) – Sven

관련 문제