質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.98%

JAVAのエラーの解決方法がわからないです

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 814

Alpa

score 30

以下のコードでコンパイルすると以下のエラーが出ます
どのようにしたら解決できるでしょうか
解決策の回答をしくお願いします

package home.tugame;

import java.awt.image.*;
import javax.imageio.*;

import java.io.*;

public class TUImageChip
{

    Sprite[] m_chip;
    public int[] m_map;
    int m_width;
    int m_height;

    public TUImageChip(String fname,int width,int height)throws IOException
    {
        BufferedImage bi=ImageIO.read(new File (fname));

        m_width=width;
        m_height=height;

        int row=bi.getHeight()/height;//行数
        int clm=bi.getWidth()/width;//列数
        m_chip=new Sprite[row*clm];

        for(int i=0,y=0;y<row;y++){
            for(int x=0;x<clm;x++,i++){
                m_chip[i]=new Sprite(bi,x*width,y*height,width,height);
            }
        }
    }

    public void MapChip(TUGame tug,int x,int y,int clm,int row)
    {
        for(int b=0;b<row;b++){
            for(int a=0;a<clm;a++){
                int i=m_map[a+b*clm];
                m_chip[i].m_x=m_width*a+x;
                m_chip[i].m_y=m_height*b+y;
                tug.draw(m_chip[i]);
            }
        }
    }
java:29: エラー: Spriteに適切なコンストラクタが見つかり ません(BufferedImage,int,int,int,int)
                                m_chip[i]=new Sprite(bi,x*width,y*height,width,height);
                                          ^
    コンストラクタ Sprite.Sprite(File,int,int,int,int)は使用できません
      (引数の不一致: BufferedImageをFileに変換できません:)
    コンストラクタ Sprite.Sprite(String,int,int,int,int)は使用できません
      (引数の不一致: BufferedImageをStringに変換できません:)

Spriteのコード↓

package home.tugame;

import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.*;

public class Sprite
{
    public BufferedImage m_bi;
    public int m_x=0;
    public int m_y=0;

    public Sprite(BufferedImage bi)
    {
        m_bi=bi;
    }

    public Sprite(File file,int x,int y,int w,int h)throws IOException
    {
        BufferedImage bi=ImageIO.read(file);
        m_bi=bi.getSubimage(x,y,w,h);
    }

    public Sprite(String fname,int x,int y,int w,int h)throws IOException
    {

        BufferedImage bi=ImageIO.read(new File (fname));
        m_bi=bi.getSubimage(x,y,w,h);

    }

    public void draw(Graphics g)
    {
        g.drawImage(m_bi,m_x,m_y,null);
    }

}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+1

Spriteというクラスにはどんなコンストラクタが用意されているのでしょうか?
使おうとしているコンストラクタが存在しないと言われているので、そのへんを調べれば良いと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/13 20:50 編集

    Spriteのコードを追加しました!
    どのへんかわかりますか?

    キャンセル

  • 2017/08/13 22:27

    エラーメッセージそのままですね。
    Sprite(BufferedImage,int,int,int,int)が見つかりません、と
    言っていますが、ソースを見ても実際にありません。

    キャンセル

0

エラーメッセージが言っている通りです。

m_chip[i]=new Sprite(bi,x*width,y*height,width,height);

ここで第一引数で渡しているのは BufferedImage ですが、実際の Sprite のコンストラクタは File です。

    public TUImageChip(String fname,int width,int height)throws IOException
    {
        File file = new File(fname);
        BufferedImage bi=ImageIO.read(file);

        m_width=width;
        m_height=height;

        int row=bi.getHeight()/height;//行数
        int clm=bi.getWidth()/width;//列数
        m_chip=new Sprite[row*clm];

        for(int i=0,y=0;y<row;y++){
            for(int x=0;x<clm;x++,i++){
                m_chip[i]=new Sprite(file,x*width,y*height,width,height);
            }
        }
    }


こうすればコンパイルできそうですが、正しいコードかどうかは書いた人に聞いてみないと分かりません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.98%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る