Уже объявленная переменная не может быть разрешена - PullRequest
0 голосов
/ 25 февраля 2019

двойная ширина не может быть разрешена вместе со стенами типа int, хотя до того, как я начал свои вычисления площади поверхности, она компилировалась.

import java.util.Scanner;
public class Assignment_3_4 {
    public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    //Customer Name

    System.out.println("Enter your First Name");
    String Firstn = in.next();
    System.out.println("Enter your Last Name");
    String Lastn = in.next();
    System.out.println("Valued Customer Name: " + Firstn + " " + Lastn);

    //Wall Measurements

    System.out.println("Enter the Width");
    if(in.hasNextDouble()){
        double width = in.nextDouble();
        System.out.println("Width/Height: " + width);
    } else {
        System.out.println("Please enter only numbers");
    }
    System.out.println("Enter number of walls");
    if(in.hasNextInt()){
        int walls = in.nextInt();
        System.out.println("Number of Walls: " + walls);
    } else {
        System.out.println("Please enter only integers");
    }
    //Calculate Surface Area - Width Height and Length are all the same measurement
    double SA = ((width * width) * walls);
    System.out.println("Area to be Painted: " + SA + " square meters");

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Вы объявили width внутри блока этого оператора if:

if(in.hasNextDouble()){
    double width = in.nextDouble();
    System.out.println("Width/Height: " + width);
}

Таким образом, этот блок является областью действия width, и он не видимый вне его,Что ты должен делать?Объявите это так:

double width;
if(in.hasNextDouble()){
    width = in.nextDouble();
    System.out.println("Width/Height: " + width);
}

Теперь width будет видимым для остальной части main(), хотя это может быть неинициализировано.Так что, может быть, это безопаснее:

double width = 0.0;
0 голосов
/ 25 февраля 2019

Java имеет то, что известно как область действия блока

Любая переменная, объявленная в блоке {}, недоступна вне блока.Вы можете использовать переменные вне области действия, но не иначе.Что вам нужно сделать, это объявить переменную за пределами области видимости.Возможно, вы также захотите выдать исключение пользователю.

double width;
if(in.hasNextDouble()){
    width = in.nextDouble();
    System.out.println("Width/Height: " + width);
} else {
    throw new IllegalArgumentException("Please enter only numbers");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...