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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

1706閲覧

メソッド内が動作しない

OMDM1991

総合スコア25

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/08/07 05:44

編集2015/08/07 07:31

下記のコードを実行すると、最初にCの画像が出てその1秒か2秒か3秒後にDの画像が出ることを予想していたのですが、実際に試すとCの画像が出たきりです。 public static void getWeit() メソッド内が動作していないようです。どうすれば改善できるでしょうか?

java

1import java.awt.*; 2import javax.swing.*; 3import javax.imageio.*; 4import java.util.Random; 5 6//============================================================================== 7//メイン・クラス 8//============================================================================== 9public class Key_test2 10{ 11 //メイン・メソッド 12 public static void main(String[] args) 13 { 14 Key_test2 test = new Key_test2(); 15 } 16 public Key_test2() 17 { 18 //基礎フレームの設定。 19 JFrame frame = new JFrame(); 20 frame.setSize(800,600); 21 frame.setTitle("Key_test2"); 22 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 23 frame.add(new MainPanel()); 24 frame.setVisible(true); 25 } 26} 27 28class MainPanel extends JPanel { 29 public MainPanel(){ 30 } 31 public void paintComponent(Graphics g) { 32 super.paintComponent(g); 33 //画像を引数に入れる 34 Image A = getToolkit().getImage("A.png"); 35 Image B = getToolkit().getImage("B.png"); 36 Image C = getToolkit().getImage("C.png"); 37 Image D = getToolkit().getImage("D.png"); 38 g.drawImage(C,0,0,this); 39 switch(key.img){ 40 case 0: g.drawImage(A,0,0,this); break; 41 case 1: g.drawImage(B,0,0,this); break; 42 //case 2: g.drawImage(C,0,0,this); break; 43 case 3: g.drawImage(D,100,100,this); break; 44 } 45 //10ミリ秒ごとに再描画 46 repaint(); 47 //System.out.println("repaint"); 48 try{ 49 Thread.sleep(10); 50 } 51 catch(InterruptedException e){ 52 } 53 //カウンター加算 54 key.counter++; 55 if(key.counter == key.weit){ 56 key.img = 3; 57 } 58 } 59} 60 61class key{ 62 //画像番号(img0=A,img1=B) 63 public static int img = 10; 64 //カウンター 65 public static int counter; 66 //待ち時間 67 public static int weit; 68 69 public static void getWeit() { 70 Random R1 = new Random(); 71 int ran = R1.nextInt(3); 72 //乱数に応じた待ち時間 73 switch(ran){ 74 case 0: weit = 1000; break; 75 case 1: weit = 2000; break; 76 case 2: weit = 3000; break; 77 } 78 System.out.println(ran); 79 } 80}

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

class key implements KeyListener
{
//画像番号(img0=A,img1=B)
public static int img = 10;
//キーコードを入れる変数
public static int KeyCode;
//カウンター
public static int counter;
//待ち時間
public static int weit;
//乱数生成
Random R1 = new Random();
int ran = R1.nextInt(3);
//乱数に応じた待ち時間
switch(ran){ ←クラスなので、これは定義できません
case 0: weit = 1000; break;
case 1: weit = 2000; break;
case 2: weit = 3000; break;
}
//System.out.println(ran);
}

メソッド内に入れましょう
public getWeit()
{
int ran = R1.nextInt(3);
//乱数に応じた待ち時間
switch(ran){ ←クラスなので、これは定義できません
case 0: weit = 1000; break;
case 1: weit = 2000; break;
case 2: weit = 3000; break;
}
}

です。

class A{
public int rand = rand.nextInt();
}

class B{
public B(){
A a = new A();
a.rand; ← 呼び出し
}

class B{
private A a;
private static void Rand(){
a.rand() ←これはエラーになります
}

private static A a; static メソッドからはstaticのついた物しか呼べません。

投稿2015/08/07 05:58

MasaakiIrie

総合スコア1021

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

OMDM1991

2015/08/07 07:29 編集

親切な解答ありがとうございます。指摘していただいた通り Random R1 = new Random(); int ran = R1.nextInt(3); //乱数に応じた待ち時間 switch(ran){ case 0: weit = 1000; break; case 1: weit = 2000; break; case 2: weit = 3000; break; } をpublic getWeit() 内に入れてみたところ無事コンパイルできたのですがメソッド内が動作していないようです。改善方法をご指摘いただけないでしょうか? 全体のソースコードを編集・更新しました。
MasaakiIrie

2015/08/07 08:17

key.getWeit(); 適切な場所でこれを呼ばないと、動作はしないですけど??
OMDM1991

2015/08/07 10:22

丁寧に解答していただきありがとうございました。m(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問