0

Javaを使用して解決したい問題に出くわしました。ユーザー入力 大きい方の長方形の寸法 (つまり、L_width と L_height) と小さい方の長方形の寸法 (つまり、S_width と S_height)。大きな長方形の中にできるだけ多くの小さな長方形を配置して、グラフィカルに表示したいと思います。

例: 大きな長方形のサイズが 4 x 5 で、小さな長方形のサイズが 2 x 2 の場合、大きな長方形の中に配置できる小さな長方形の最大数は 4 です。それらをグラフィカルに表示したいと思います。 .

Javaが初めてなので、プログラムの観点からこの問題にどのようにアプローチできるか、そして同じことを達成するためにどの概念を使用する必要があるかを知りたいと思いました。


長方形の最大数を計算するための初期コード。Javaを使用してこの結果をグラフィカルに表示するのを手伝ってもらえますか

// Code Starts
import java.awt.Graphics;
import java.util.Scanner; 

import javax.swing.JComponent;
import javax.swing.JFrame;

//Class to store the output of layout
class layout{
    private int Cnt_BW_CW=0; // BoardWidth and CardWidth are arranged together
    private int Cnt_BW_CH=0;
    private int option=0;    // Option 1: width-width Option 2: width-height

    public int getCnt_BW_CW (){
        return Cnt_BW_CW;
    }
    public int getCnt_BW_CH (){
        return Cnt_BW_CH;
    }
    public int getoption (){
        return option;
    }

    public void setCnt_BW_CW (int newValue){
        Cnt_BW_CW = newValue;
    }
    public void setCnt_BW_CH (int newValue){
        Cnt_BW_CH = newValue;
    }
    public void setoption (int newValue){
        option = newValue;
    }
}

// Stores the Dimension
class Dimension{
    private float w,h;
    Scanner input = new Scanner( System.in );

    public Dimension(){
        System.out.print( "Enter Width: " ); 
        w = input.nextInt(); 
        System.out.print( "Enter Height: " ); 
        h = input.nextInt(); 
    }
    public Dimension(float width, float height){
        w = width;
        h = height;
    }
    public float getWidth (){
        return w;
    }
    public float getHeight (){
        return h;
    }
    public void setWidth (float newWidth){
        w = newWidth;
    }
    public void setHeight (float newHeight){
        h = newHeight;
    }
}

class MyCanvas extends JComponent {
    private static final long serialVersionUID = 1L;

    public void paint(Graphics g) {
        g.drawRect (10, 10, 200, 200);  
      }
}

public class boundedRect {
  @SuppressWarnings("unused")

  public static void main(String[] a) {
    Dimension Board = new Dimension();
    Dimension Card = new Dimension();
    int Cnt =0;

    Cnt = NumOfRect(Board, Card);
    System.out.printf( "Number of Cards:%d",Cnt );

    JFrame window = new JFrame();
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setBounds(30, 30, 300,300);
    window.getContentPane().add(new MyCanvas());
    window.setVisible(true);
  }

  public static int NumOfRect(Dimension b,Dimension c){
      float bw,bh,cw,ch;
      int bw_cw,bh_ch,bw_ch,bh_cw;
      int SameDimensionCnt,DiffDimensionCnt;
      int count;
      layout Result = new layout();

      bw =b.getWidth(); bh = b.getHeight();
      cw =c.getWidth(); ch = c.getHeight();

      if (bw < cw || bh < ch){
          System.out.println( "Board and Card Dimension mismatch" );
          System.exit(0);
      }

      bw_cw = (int)Math.floor(bw/cw);
      bh_ch = (int)Math.floor(bh/ch);
      SameDimensionCnt = bw_cw * bh_ch; 
      Result.setCnt_BW_CW(SameDimensionCnt);

      bw_ch = (int)Math.floor(bw/ch);
      bh_cw = (int)Math.floor(bh/cw);
      DiffDimensionCnt = bw_ch * bh_cw;
      Result.setCnt_BW_CH(DiffDimensionCnt);

      System.out.printf( "Matching BW x CW: %d\n",SameDimensionCnt );
      System.out.printf( "Matching BW x CH: %d\n",DiffDimensionCnt );

      if (SameDimensionCnt < DiffDimensionCnt ){
          count = DiffDimensionCnt;
          System.out.println( "Align Board Width and Card Height" );
          Result.setoption(2);
      }else {
          count = SameDimensionCnt;
          System.out.println( "Align Board Width and Card Width" );
          Result.setoption(1);
      }
      return count;
  }
}
4

1 に答える 1

1

したがって、大きな四角形を多数の小さな四角形で並べて表示する必要があります。まず、小さな四角形を表すクラスを定義し、ArrayListそれらを保持するデータ構造 (おそらく ) を作成します。入れ子になったforループを使用して大きな四角形の領域をS_width/S_heightステップで歩き、収まる数の小さな四角形を作成します。ArrayListそれらが作成されたら、それらを に追加します。ArrayList必要な場合は、Google で を検索して Java ドキュメントを見つけてください。

次に、それらを画面に描画するためのコードを記述する必要があります。そのためには、Google で公式の Java チュートリアルを検索し、グラフィックスのセクションを読んでください。

最初にコードを書いてみてください。問題がある場合は、ここにコードを投稿してください (質問を編集できます)。

于 2012-07-25T04:23:47.183 に答える