2017-11-07 1 views
0

나는 어떻게 자바를 스칼라로 "계속"할지 모른다. 내가 bool + break에서 마커를 사용할 수 있지만, 그 나쁜 생각 구글이 도움이되지 않았다 :( 을 그것은 스칼라에서 내 첫 번째 프로그램이다 ... 그래 ... 그것은 끔찍한스칼라, 스칼라에서 "for"java

정렬 자바

def sort(in: Array[Int], a:Int, b:Int) 
    { 
    var i,j,mode; 
    double sr=0; 
    if (a>=b) return;          // size =0 
    for (i=a; i<=b; i++) sr+=in[i]; 
    sr=sr/(b-a+1); 
    for (i=a, j=b; i <= j;) 
      { 
      if (in[i]< sr) { i++; continue; }  // left > continue 
      if (in[j]>=sr) { j--; continue; }   // right, continue 
      int c = in[i]; in[i] = in[j]; in[j]=c; 
      i++,j--;          // swap and continue 
      } 
    if (i==a) return; 
    sort(in,a,j); sort(in,i,b); 
    } 

정렬 스칼라 ...

def SortMerger(in:List[Int], a:Int, b:Int):Unit = { 
    var i = 0; 
    var j = 0; 
    var mode = 0; 
    var sr = 0.0; 
    if(a>=b) return; 
    i=a 
    while(i<=b) 
    { 
     sr+=in.ElementOf(i); 
     i += 1 
    } 
    sr=sr/(b-a+1) 
    i=a 
    j=b 
    while(i<=j) 
    { 
     if(in.ElementOf(i)<sr) { 
     i += 1; 
     // where continue??? >< 
     } 
    } 

    return 
    } 

답변

2

스칼라없이 문을 계속하고있다, 하지만 당신이하려는 것은 간단한 if/else 구조로 할 수 있습니다. 여기 in의 유형이 아닌 List

+0

목록 내 수업 단일 연결리스트 I 참조)) – StriBog

+0

@StriBog 아입니다, Array해야한다는

while(i<=j) { if(in(i) < sr) { i += 1 } else if (in(j) >= sr) { j -= 1 } else { int c = in(i) in(i) = in(j) in(j) = c i += 1 j -= 1 } } 

참고. 표준 라이브러리 클래스와 동일한 이름을 사용하면 혼동을 일으킬 수 있습니다. 그래도 여전히 배열을 사용해야한다고 말합니다. 연결된 목록은 Array와 비교하여 이런 종류의 작업에 비효율적입니다. – puhlen

관련 문제