【解決方法】数値の配列が与えられる。 配列内の各数値について、配列内に存在する倍数を見つけます。


Given an array of numbers. For each number in array, find the multiples that exist in the array.
Eg
Array - [2, 3, 6, 10]
Output- 
Multiples of 2 - 6,10
Multiples of 3 - 6
Multiples of 6 - No multiples
Multiples of 10 - No multiples

しかし、私は得ています

Multiples of each element of array is:
Multiples of2Is No multiples
Multiples of2is:6
Multiples of2is:10
Multiples of2is:0
Multiples of3is:6
Multiples of3Is No multiples
Multiples of3is:0
Multiples of6Is No multiples
Multiples of6is:0
Multiples of10is:0

私が試したこと:

import java.util.*;
import java.io.*;
import java.lang.*;
public class multiplesarrays
{
    public static void main(String[] args)
    { 
        Scanner sc=new Scanner(System.in);
        
        System.out.println("Enter the no: of elements in array");
        int n=sc.nextInt();
        int arr[]=new int[100];
        for(int i=0; i<n; i++)
        {
            arr[i]=sc.nextInt();
        }
        System.out.println("Multiples of each element of array is:");
       
       for(int i=0; i<n; i++)
       {
      
      
       for(int j=i+1; j<=n; j++)
       {
           
       if(arr[j]%arr[i]!=0)
       {
           System.out.println("Multiples of"+arr[i]+ "Is No multiples");
    
       }
       else if(arr[j]%arr[i]==0)
       { 
           System.out.println("Multiples of"+arr[i]+"is:"+arr[j]);
         
       }
          
       }
       }
       
       
    }
}

解決策 1

簡単な解決策: 配列をソートします。 そうすれば、すべての重複が互いに隣り合って、1 回のパスで位置を特定し、数え、印刷することができます。
ヒント: Java には配列のソートメソッドが組み込まれています…

ただし、コードをインデントしてください。そうすることではるかに読みやすくなります。

解決策 2

引用:

しかし、私は得ています

プログラマーとしてのあなたの仕事は、コード内のバグを見つけることでもあります。
– 入力を注意深く見ると、重複はなく、値がソートされています。 これらの条件を強制しない場合、出力は正しくなりません。

引用:
Java
Multiples of2is:0

– これは、入力にない値に対して 2 をテストしていることを示します。
– 「2 の倍数 – 」は正しい結果で何回表示されますか。コードで何回表示されますか?
– 複数がないことはいつわかりますか? あなたのコードはいつそれを出力しますか?

これらの質問を自分自身に問い、その答えから問題を特定し、修正を加えることができるはずです。

コメント

タイトルとURLをコピーしました