2014-09-28 3 views
0

В моем коде ниже double getAirSpeeddouble 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 
+0

В чем вопрос? Каков ожидаемый результат? Что вы получаете, какие-то ошибки? Просьба уточнить это в вопросе BODY (не название). Кроме того, добавьте теги на свой вопрос, особенно язык кода. – Mephy

+0

вы их заявляете, а затем ничего не делайте с ними. Итак, есть ваш ответ: если вы хотите что-либо в * их, вы должны сначала сделать свой код так. –

ответ

0

Здесь я не могу видеть, где вы инициализируете данные переменные. Поскольку все три vairables являются локальными для основного метода, поэтому компилятор не будет присваивать им значение по умолчанию. просто создание 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 в качестве параметра 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 
Смежные вопросы