2013-10-29 29 views
-2

對不起,如果它似乎我垃圾郵件這個論壇,但我很接近完成這個小程序。我創建了一個簡單的球類,它包含球的x,y,半徑和速度。此時運行小程序返回錯誤,但它們都是一樣的,「無法找到符號」。對此主題的搜索已將其縮小到未聲明變量或構造函數存在問題的問題。我已經搜索了一個小時的解決方案,但我不知道在哪裏尋找。任何解決方案(我用Java編輯器)我得到42「無法找到符號」的錯誤,我找不到解決方案

import java.applet.*; 
import java.awt.*; 
import javax.swing.*; 
import javax.swing.event.*; 

public class BallApplet2 extends Applet implements Runnable 
{ 
public static void main(String[] args) { 
Ball rodebal = new Ball(); 
Ball blauwebal = new Ball(); 

rodebal.x_pos = 150; 
rodebal.y_pos = 301; 
rodebal.radius = 20; 
rodebal.randomspeed = (int)(Math.random() * 7 + 2); 
rodebal.ballspeedx = -randomspeed(); 

blauwebal.x_pos = 250; 
blauwebal.y_pos = 301; 
blauwebal.radius = 20; 
blauwebal.randomspeed = (int)(Math.random() * 7 + 2); 
blauwebal.ballspeedx = randomspeed(); 
} 

public void init() {} 

// de Thread wordt hier aangemaakt 
public void start() { 
Thread th = new Thread (this); 
th.start(); } 
public void stop() {} 
public void destroy() {} 

// de Thread wordt hier uitgevoerd door de methode run() 
public void run() { 
// de prioriteit van de Thread wordt verlaagd zodat hij niet nog een keer geactiveerd wordt tijdens het uitvoeren 
Thread.currentThread().setPriority(Thread.MIN_PRIORITY); 
while (true) 
{ 
    rodebal.x_pos += rodebal.ballspeedx; 

    blauwebal.x_pos += blauwebal.ballspeedx; 


    // repaint() update de positie van de ballen 
    repaint(); 
    // als x_pos < 100 is draait de richting van de bal om 
    if (rodebal.x_pos < 100) { 
    rodebal.ballspeedx = -rodebal.ballspeedx; 
    x_pos1 = 100; 
    } 
    if (blauwebal.x_pos < 100) { 
    blauwebal.ballspeedx = -blauwebal.ballspeedx; 
    x_pos2 = 100; 
    } 
    // als x_pos > 300 is draait de richting van de bal om 
    if (rodebal.x_pos > 300) { 
    rodebal.ballspeedx1 = -rodebal.ballspeedx; 
    x_pos1 = 300; 
    } 
    if (blauwebal.x_pos > 300) { 
    blauwebal.ballspeedx = -blauwebal.ballspeedx; 
    x_pos2 = 300; 
    } 
    // als de positie van de blauwe bal (x_pos2) - de positie van de rode bal (x_pos1) kleiner is 
    // dan de som van de stralen van de rode en de blauwe bal draaien beide ballen om.          
    if (Math.abs(blauwebal.x_pos-rodebal.x_pos)<rodebal.radius+blauwebal.radius){ 
    rodebal.ballspeedx = -rodebal.ballspeedx; 
    blauwebal.ballspeedx = -blauwebal.ballspeedx; 
    } 

    try { Thread.sleep (20); } 



    catch (InterruptedException ex) {} 

Thread.currentThread().setPriority(Thread.MAX_PRIORITY); }} 

public void paint (Graphics g) { 


// de rode bal 
g.setColor (Color.red); 
g.fillOval (rodebal.x_pos - rodebal.radius, rodebal.y_pos - rodebal.radius, 2 * rodebal.radius, 2 * rodebal.radius); 

// de blauwe bal 
g.setColor (Color.blue); 
g.fillOval (blauwe.x_pos - blauwe.radius2, blauwebal.y_pos - blauwe.radius, 2 * blauwe.radius, 2 * blauwe.radius); 


g.setColor(Color.black); 
g.drawLine(80,280,80,320); // lijn links 
g.drawLine(320,280,320,320); // lijn rechts 
g.drawLine(80,320,320,320); // lijn onder 



} 



// Einde eventmethoden 


} 





public class Ball { 


int x_pos; 
int y_pos; 
int radius; 
int randomspeed; 
float ballspeedx; 


} 
+3

哪條線給出錯誤? – ssantos

+1

我們將需要Ball的代碼... – arcy

+2

兩種可能性都在門外......你不會導入'Ball'(根據軟件包等你可能不需要做),而你試圖使用一種名爲'randomspeed'的方法,該方法尚未被聲明。 –

回答

2

您正在嘗試使用變量rodebal和blauwebal在您的start()方法,但它們不聲明那裏。它們需要在類中聲明,而不是作爲靜態方法main()中的變量,以便可用於start()。


在回答一個額外的問題:

我沒有時間或空間來解釋這一切 - 我想給你一些簡單的指針,然後你會必須研究基本文本中的一些基礎知識。

您似乎想要類中全局方法的變量。他們將不得不在課堂上聲明,但在任何方法之外。大括號在類和方法中定義「內部」,因此,在方法的括號之外,但在類的括號內。

你的主要方法是(也必須是)靜態的。這與實例變量不同。常見的正確方法是使用變量作爲實例變量,這意味着它們不能直接從靜態方法訪問。所以,你要與一個開始,看起來像這樣結束:

public class Foo 
{ 
    String var1 = null; 
    String var2 = null; 
    int var3 = 0; 

    public static void main (String[] arguments) 
    { 
    Foo foo = new Foo(); // create an instance of this class 
    foo.bar();   // execute a method on that instance 
    } 

    public void bar() 
    { 
    // here you can use the variables var1 through var3 
    // you can also use them in any other non-static method in the class; 
    // changing them in one method will make that change visible to the other. 
    } 
} 

現在,以下概念讀了起來:類,實例,實例變量,靜態方法,靜態變量。你需要將所有這些事情都冷靜下來,以便用這種或其他OO語言進行重要的編程。

+0

那麼,我把變量? – user2919717

+0

你似乎希望他們是領域你的類只在主要方法中不是局部變量。 –

相關問題