Java 我的变量没有正确初始化

Java 我的变量没有正确初始化,java,variables,Java,Variables,在我下面的代码中,double getAirSpeeddouble calcPatternwidth和double calcPatternLength未正确初始化,为什么 /** * holding patterns * assignment 1 * question 2 **/ import java.util.Scanner; public class StockiColeA1Q2 { public static void main(String []args)

在我下面的代码中,
double getAirSpeed
double calcPatternwidth
double 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

在这里,我无法看到您在哪里初始化给定的变量。由于这三个变量都是main方法的局部变量,所以编译器不会将默认值分配给它们。仅仅创建这些变量的getter不会赋值。如果在类中的main方法外创建变量,编译器将分配defaut值,但您必须使它们成为静态的,因为main方法是静态的,并且您不能在静态块中使用非静态变量。

您没有正确初始化main中的变量。您可以显示调用函数并预先分配它们,然后显示它们。我想你要找的是一个
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
作为
calcPatternWidth
calcPatternLength
的参数。我猜这就是你想要实现的

您确实应该在完成后关闭扫描仪对象,因此我将修改
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

问题是什么?预期产量是多少?有什么错误吗?请在问题正文(不是标题)中澄清。另外,在你的问题中添加标记,特别是代码的语言。你声明它们,然后不做任何事情。这就是你的答案:如果你想从中得到什么,你必须首先让你的代码做到这一点。