2016-09-17 7 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

負の数を置き換えるためにそれほど多くの条件は必要ありません。ループ内で負の数を取得すると、1つずつ置換するだけです。

冗長性の削除:覚えておくべきこと:同じ条件のステートメントがある場合は、個別に行う必要はありません。すべての文を同じ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."); 


    } 
    } 
関連する問題