2016-04-08 10 views
0

で別のクラスのコンストラクタに一つのクラスから引数としてメソッドを渡す:のコンストラクタのための場所を指示、私はJavaのコースの特定の割り当てを持って次のように私が持っている疑問があるのjava

第二のクラスは以下の通りである:最初の位置定数と現在位置データの両方を初期化

  • ユーザに渡すパラメータは、初期位置及び初期速度を入力すると、コンストラクタを定義し、それらを使用フィールドの値をp最初の位置のためのarameter。

  • 初期速度定数と現在速度データフィールドの両方を初期速度パラメータの値に初期化します。今

最初のクラスのmainメソッド:

がメインメソッドを定義します(

  • 表示プログラムは、ユーザーに何をするかの説明をして一定の高さのしきい値を使用して、あなたの説明)。

  • ユーザーからの初期位置と初期速度値を読み取るために、静的メソッド(も入力の入力と検証が必要です)を使用してください。

  • すべてのユーザー入力を読み込んだ後に空白行を表示します。 o初期位置と初期速度をコンストラクタの引数として読み込み、FallingItemクラスの新しいオブジェクトを作成します。

    プロジェクタークラス:

     public static void main(String[] args) { 
    
        System.out.println("This program will calculate the position and " 
          + "velocity \n of a falling object until it reaches " 
          + HEIGHT_THRESHOLD + " feet above the ground."); 
    
        initialPosition(); 
    
        initialVelocity(); 
    
        System.out.println(); 
        System.out.println(); 
    
        FallingItem I = new FallingItem(initialPosition(), initialVelocity()); 
    

    ....以下 方法:

    'public static double initialPosition(){ 
         Scanner input = new Scanner(System.in); 
         boolean validated; //validator for while statements 
        double startPosition; //variable for initialPosition 
        System.out.println("Please enter the intial position from which" + 
          " you intend to drop the object." + "this cannot be lower "+ 
          "than 600 feet."); 
        do{ 
    
    
        startPosition = input.nextDouble(); 
        if (startPosition > HEIGHT_THRESHOLD){ 
         validated = true; 
        } 
        else{ 
         System.out.print("error, value is too low. Try again"); 
         validated = false; 
        } 
    
    
        }while (validated = false); 
        return startPosition; 
        } 
    
    
        public static double initialVelocity(){ 
        Scanner userInput = new Scanner(System.in); 
        double startVelocity; 
    
        System.out.println("\n please enter the initial velocity, in feet per" + 
          " second. \n This value cannot be less than -500"); 
        startVelocity = userInput.nextDouble(); 
    
        if(startVelocity <= FallingItem.TERMINAL_VELOCITY){ 
         System.out.print("error, this value cannot be less than -500 feet" + 
           " per second. Please re-enter the value"); 
         startVelocity = userInput.nextDouble(); 
    
    
        } 
    
        return startVelocity;' 
    

    を前に

は、これは、私は、これはこれまでに設定した方法ですあなたは尋ねる: はい、DO-whileループが必要である、と ははい、方法は、アイテムクラスのその

コンストラクタのように促すための必要

public FallingItem(double initialPosition, double initialVelocity){ 

    INITIAL_POSITION = initialPosition; //constant to be filled by user input 

    INITIAL_VELOCITY = initialVelocity; //constant to be filled by user input 

    currentPosition = initialPosition; 

    currentVelocity = initialVelocity; 

} 

だから、要するに、私は希望私は率直に言ってアイデアがないので、現時点で起こることであるユーザー入力のプロンプトを自分自身で重複させずに、要件を満たす方法を見つけるためにコミュニティが提供しなければならないヘルプを非常に高く評価します。

については、

答えて

0

あなたの大会休憩のうちのいくつかを打つつもりです...

FallingItem I = new FallingItem(initialPosition(), initialVelocity()); 

Javaの変数は、クラスがPascalケーシングに従う間にCamelのケーシングに従うことになります。

  • キャメルケース:fallingItemitemThatIsFalling
  • パスカルケーシング:MyFallingItemFallingItem、またBurgerKingHotdog

、あなたのScannerオブジェクトがローカルに定義された、またはあなただけ使用する各メソッド内れ続けますそれは一度。代わりに、それをグローバルに定義してみてください(mainメソッドの角括弧の外側にあるmainメソッドの上)。あなたはそれをあなたのプログラムのどこででも参照することができます。ただちにそれを使用するために、新しいインスタンスを初期化する必要はありません。グローバル変数の理解に問題がある場合は、thisをチェックしてください。

コードも正しくフォーマットしていることを確認してください。読みやすくするほど、エラーを検出しやすくなります。 Clean codeは、みんなの人生を楽にしてくれます。

+0

Zulfe、コメントをいただきありがとうございます。しかし、私がしようとすると、netbeansは次のエラーをスローします。 "非静的変数は静的コンテキストから参照できません。" – firemagnet

+0

'私の静的なスキャナは何でも=新しいScanner();' – Zulfe

+0

、ありがとう。ただし、アイテムクラスのコンストラクタにメソッドを渡すことに関する推奨事項はありますか?現在実装されているように、指示に従って、私は最終的には起こらないと思われる入力のための2つのプロンプトを持つことになります。よろしくおねがいします。 – firemagnet

関連する問題