2016-09-17 2 views
-1

여기에 작은 문제가 있습니다. 배열의 모든 음수를 숫자 위치로 대체하려고합니다.JAVA : 배열의 숫자를 숫자로 바꾸고 인쇄하십시오.

public class oppgave33{ 

public static void main(String[] args) { 

    int[] heltall = {1, 4, 5, -2, -4, 6, 10, 3, -2}; 
    int counter = 0; 
    int sumNeg = 0; 

    while(counter < heltall.length){ 

    //array print out 

    System.out.println("array[" + counter + "] = " + heltall[counter]); 


    if(heltall[counter] < 0){ 
     System.out.println(heltall[counter]); 

    } 

    //replacing negative numbers 

    if(heltall[counter] < 0){ 
     heltall[counter]=counter; 
    } 
     if(heltall[counter] < 0){ 
     sumNeg++; 
    } 

    //negative numbers position print out 

    if(heltall[counter] < 0){ 
     System.out.println("Negative numbers position in array is : " + counter); 
    } 

    counter++; 
    } 

    //printing out how many negative numbers 

    System.out.println("There are : " + sumNeg + " negative numbers."); 


    } 
    } 

최종 참고 : 내 문제는 번호를 교체하기 전에 배열, 인쇄됩니다 있다는 것입니다, 나는 그것을 교체 도착 후 배열을 인쇄 할 ... 여기 내 코드 제거하는 경우 음수가 배열에서의 위치로 대체되는 if 설정, 음수가 인쇄 된 위치 및 음수가 몇 개인지를 알 수 있습니다. 나를 도울 수 있기를 바랍니다. :) 고맙습니다!

+0

가능한 http://stackoverflow.com/questions/39528556/replacing-array-values의 중복,하지만 아스 커의 노력이 시간. :-) –

답변

0

코드에 중복 조건이 너무 많습니다. 귀하의 시도가 매우 가까운, 당신은 단순히 다음을 수행 할 수

while (counter < heltall.length) { 
    // if the number is negative, replace it with its index 
    if (heltall[counter] < 0) { 
     heltall[counter] = counter; 
    } 
    counter++; 
} 
// outside the loop 
System.out.println(Arrays.toString(heltall)); 

중요 팁 : 이러한 경우에, 당신이해야 디버그 코드. 이렇게하면 코드의 흐름을 더 잘 이해하고 자신이 알지 못하는 문제를 발견하는 데 도움이됩니다. 현재 코드를 디버깅하고 나서 수정하는 것이 좋습니다.

+0

hmmm,하지만 터미널에서 컴파일하려고하면 "System.out.println (Arrays.toString (heltall));"과 함께 뭔가 잘못되었습니다. " 오류 : 심볼 "배열"을 찾을 수 없습니다 – Chris

+0

@Chris 가져 오기해야합니다 :'import java.util.Arrays;' – Maroun

0

음수를 대체 할 많은 조건이 필요하지 않습니다. 루프에서 음수를 얻으면 하나씩 교체하십시오.

중복 제거 : 한 가지 기억해야 할 점 : 동일한 조건에 대한 몇 가지 진술이있을 경우 개별적으로 수행 할 필요가 없습니다. 동일한 if 블록에있는 모든 명령문을 작성하십시오.

예를 들어, 코드 :

if (heltall[counter] < 0) { 
    System.out.println(heltall[counter]); 
} 

if (heltall[counter] < 0) { 
    heltall[counter] = counter; 
} 

if (heltall[counter] < 0) { 
    sumNeg++; 
} 

if (heltall[counter] < 0) { 
    System.out.println("Negative numbers position in array is : " + counter); 
} 
로 대체 될 수 있습니다 :

if(heltall[counter] < 0) { // do all in the same if condition block 
    System.out.println(heltall[counter]); 
    heltall[counter] = counter; 
    sumNeg++; 
    System.out.println("Negative numbers position in array is : " + counter); 
} 

솔루션 : 어쨌든, 전체 코드는 다음과 같이 수 :

while (counter < heltall.length) { 
    // replacing negative numbers 
    if (heltall[counter] < 0) { 
     heltall[counter] = counter; 
     sumNeg++; 
    } 
    counter++; 
} 
System.out.println("There were : " + sumNeg + " negative numbers."); 
System.out.println("Array after replacing negative numbers: "+Arrays.toString(heltall)); 
0

코드의 작동 버전은 다음과 같습니다.

참고 : 교체 후에 인쇄 명령을 보내야합니다. 코드는 단계별로 그리고 순서대로 실행됩니다. 맨 위 행의 명령문이 먼저 실행 된 다음 아래쪽 행이 실행됩니다 (순서대로).

public class oppgave33{ 

public static void main(String[] args) { 

    int[] heltall = {1, 4, 5, -2, -4, 6, 10, 3, -2}; 
    int counter = 0; 
    int sumNeg = 0; 

while(counter < heltall.length){ 

    if(heltall[counter] < 0){ 

     //replacing negative numbers 
     heltall[counter]=counter; 

     //counting negative number amount 
     sumNeg++; 

     //array print out after replace 
     System.out.println("array[" + counter + "] = " + heltall[counter]); 

     //negative numbers position print out 
     System.out.println("Negative numbers position in array is : " + counter); 
    } 



    counter++; 
    } 

    //printing out how many negative numbers 

    System.out.println("There are : " + sumNeg + " negative numbers."); 


    } 
    } 
관련 문제