2014-09-28 123 views
0

在我的代碼下面double getAirSpeeddouble calcPatternwidthdouble calcPatternLength沒有正確初始化,爲什麼?我的變量沒有正確初始化

/** 
* holding patterns 
* assignment 1 
* question 2 
**/ 

import java.util.Scanner; 

public class StockiColeA1Q2 { 

    public static void main(String []args) { 
    Scanner keyboard = new Scanner(System.in); 

    double getAirSpeed ; 
    double calcPatternWidth; 
    double calcPatternLength; 

    System.out.println("That speed is " + getAirSpeed + 
         "\nHolding pattern width: " + calcPatternWidth + 
         "kms\nHolding pattern length: " + calcPatternLength + "kms"); 

    }//main 

    public static double getAirSpeed() { 
    Scanner keyboard = new Scanner(System.in); 

    System.out.println("Enter the speed in Knots: "); 
     double knots = keyboard.nextDouble(); //knots given by user 

     return knots*1.852; 

    }//get air speed 

    public static double calcPatternWidth(double knots) { 

    return (knots/60*Math.PI)*2; 

    }//patern width 

    public static double calcPatternLength(double knots) { 

    return knots/60 + (knots/60*Math.PI)*2; 


    }//pattern width 

}//class 
+0

有什麼問題嗎?預期產出是多少?你有什麼,有什麼錯誤?請在問題BODY(不是標題)中說明。另外,爲您的問題添加標籤,特別是代碼的語言。 – Mephy 2014-09-28 02:39:46

+0

你宣佈他們,然後不要對他們做任何事情。所以你的答案是:如果你想要*中的任何東西*,你必須先讓你的代碼做到這一點。 – 2014-09-28 02:40:42

回答

0

在這裏,我無法看到你在哪裏初始化給定的變量。由於所有三種可變參數都是main方法的本地參數,因此編譯器不會爲其分配默認值。只是創建這些變量的getter不會分配值。如果你在課堂上創建變量出方的主要方法,編譯器將分配defaut值,但你必須讓他們靜爲主要方法是靜態的,你不能使用靜態塊中的非靜態變量。

2

你沒有正確初始化主變量。您顯示調用函數並將其分配在前面,然後顯示它們。我想你要找的是一個看起來很喜歡這一個main

public static void main(String[] args) { 
    double getAirSpeed = getAirSpeed(); 
    double calcPatternWidth = calcPatternWidth(getAirSpeed); 
    double calcPatternLength = calcPatternLength(getAirSpeed); 

    System.out.println("That speed is " + getAirSpeed + "\nHolding pattern width: " + calcPatternWidth 
      + "kms\nHolding pattern length: " + calcPatternLength + "kms"); 

}// main 

上面的代碼使用了getAirSpeed作爲參數傳遞給calcPatternWidthcalcPatternLength。我猜這就是你想要完成的。

完成後您確實應該關閉掃描儀對象,因此我會修改getAirSpeed()以在返回之前調用keyboard.close()

public static double getAirSpeed() { 
    Scanner keyboard = new Scanner(System.in); 

    System.out.println("Enter the speed in Knots: "); 
    double knots = keyboard.nextDouble(); // knots given by user 

    keyboard.close(); 
    return knots * 1.852; 

}// get air speed