Открытый класс Main не работает, этот код вообще возможен или? - PullRequest
0 голосов
/ 30 апреля 2018

Я занимался практикой с Java и решил попробовать кое-что, поэтому попросил своего профессора дать мне несколько идей для практики и придумал это. Когда я пошел на компиляцию в Eclipse, это не сработало, это было связано с открытым классом Main, но я понятия не имею, что. Пожалуйста, скажите мне, что я делаю неправильно или если это сработает вообще.

Это ошибка, которую я получаю

 public class Forecast 
{
    public int temperature;
    public int pressure;

}

public class Main
{
    public static void changeTheString(String weather)
    {
        weather = "sunny";
    }

    public static void changeTheArray(String[] rainyDays)
    {
        rainyDays[1] = "Sunday";
    }
    public static void changeTheObject(Forecast forecast)
    {
        forecast.temperature = 35;
    }
    public static void main (String[] args)
    {
        String weather = "rainy";
        changeTheString(weather);
        String[] rainyDays;
        System.out.println("The rainy days were on " + rainyDays[0] + " and " + rainyDays[1]);

        String[] rainyDays = new String[] {"Monday", "Friday"};
        changeTheArray(rainyDays);
        System.out.println("The rainy days were on " + rainyDays[0] + " and " + rainyDays[1]);

        Forecast forecast = new Forecast();
        forecast.pressure = 700;
        forecast.temperature = 20;
        changeTheObject(forecast);
        System.out.println("The temperature is " + forecast.temperature + " Celsius");

    }

}

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

у вас есть два варианта:

1 - определить основной класс в своем собственном файле (отделенном от Forecast)

2 - сделать основной класс вложенным: ваш код будет таким:

 public class Forecast 
{
public int temperature;
public int pressure;

public class Main
{
    public static void changeTheString(String weather)
    {
        weather = "sunny";
    }

    public static void changeTheArray(String[] rainyDays)
    {
        rainyDays[1] = "Sunday";
    }
    public static void changeTheObject(Forecast forecast)
    {
        forecast.temperature = 35;
    }
}


public static void main (String[] args)
{
    String weather = "rainy";
    changeTheString(weather);
    String[] rainyDays;
    System.out.println("The rainy days were on " + rainyDays[0] + " and " + rainyDays[1]);

    String[] rainyDays = new String[] {"Monday", "Friday"};
    changeTheArray(rainyDays);
    System.out.println("The rainy days were on " + rainyDays[0] + " and " + rainyDays[1]);

    Forecast forecast = new Forecast();
    forecast.pressure = 700;
    forecast.temperature = 20;
    changeTheObject(forecast);
    System.out.println("The temperature is " + forecast.temperature + " Celsius");

}

}
0 голосов
/ 30 апреля 2018

Как указывал aziz_aon, вам также нужно либо объявить класс main в отдельном файле, либо сделать класс Forecast внутренним классом. Я бы предложил переместить класс Forecast в основной класс Чтобы сделать это, вам нужно переместить его внутрь Main, как если бы вы делали это с помощью функции. (Извините за форматирование я на мобильном телефоне) Проблема в том, что вы заявляете

String[] rainyDays;

затем вы пытаетесь присвоить новое значение, например

String[] rainyDays = new String[] {"Monday", "Friday"};

но вы уже определили rainyDays как String [], поэтому вы не можете сделать это снова
измените его на

rainyDays = new String[] {"Monday", "Friday"};

так что ваш класс выглядит так:

 public class Forecast 
 {
     public int temperature;
     public int pressure;

}

public class Main
{
    public static void changeTheString(String weather)
    {
        weather = "sunny";
    }

    public static void changeTheArray(String[] rainyDays)
    {
    rainyDays[1] = "Sunday";
    }
    public static void changeTheObject(Forecast forecast)
    {
        forecast.temperature = 35;
    }
    public static void main (String[] args)
    {
    String weather = "rainy";
    changeTheString(weather);
    String[] rainyDays;
    System.out.println("The rainy days were on " + rainyDays[0] + " and " + rainyDays[1]);

    rainyDays = new String[] {"Monday", "Friday"};
    changeTheArray(rainyDays);
    System.out.println("The rainy days were on " + rainyDays[0] + " and " + rainyDays[1]);

    Forecast forecast = new Forecast();
    forecast.pressure = 700;
    forecast.temperature = 20;
    changeTheObject(forecast);
    System.out.println("The temperature is " + forecast.temperature + " Celsius");

}

}
...