Запуск программ вне Main на Java - PullRequest
0 голосов
/ 03 февраля 2020

Я новый студент CS, только начинающий с Java, и в настоящее время я использую IntelliJ в качестве своей IDE. На данный момент мы не собираемся разбираться с какими-то безумно сложными программами, просто основываемся на c в классных проектах. Моя проблема в том, что когда я go создаю свой проект, у меня нет другого выбора, кроме как запустить его через класс Main, хотя инструкции хотят, чтобы имя класса было чем-то определенным c. Кроме того, всякий раз, когда я пытаюсь создать новый класс или запустить загруженный файл java, он все равно продолжает запускать основной класс, даже если у меня закрыта Main. У меня есть файлы, которые я создал внутри VS Code (я знаю, что это не лучший вариант, и именно поэтому я перешел на IntelliJ), и я не могу их запустить, если я не создаю новый проект, копирую и вставляю код в основной файл и измените имя класса на основной.

Я не уверен, что это что-то внутри Java, IntelliJ, или просто я не понимаю, как все работает, но я надеялся, что кто-то может помочь мне с этим.

Вот пример. В папке sr c у меня есть папка пакета, внутри которой находится файл Main java вместе с отдельным файлом, который я пытаюсь запустить. Main также пуст.

package com.ethan;

import java.util.Scanner;


public class Exercise02_19 {

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

        //Enter 3 points
        System.out.println("Enter the 3 points for a triangle: ");

        //Point A
        double x1 = input.nextDouble();
        double y1 = input.nextDouble();

        //Point B
        double x2 = input.nextDouble();
        double y2 = input.nextDouble();

        //Point C
        double x3 = input.nextDouble();
        double y3 = input.nextDouble();


        //Find the sides and area

        double side1 = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
        double side2 = Math.sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3));
        double side3 = Math.sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2));

        double s = (side1 + side2 + side3)/2;
        double area = Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));

        System.out.println("The area of the triangle is: " + area);

    }
}

Спасибо.

Ответы [ 4 ]

2 голосов
/ 03 февраля 2020

@ efan - Алексис Павлидис прав.

Для уточнения:

  1. В Java каждая "программа" состоит из одной или нескольких " классы ». В вашем примере класс называется Exercise02_19.

  2. Каждая программа должна «где-то начинаться». Это называется точка входа .

  3. В Java точка входа представляет собой метод с подписью public static void main(String[] args).

  4. В Java, в отличие от во многих других языках каждый класс может иметь свой собственный main(). Вы должны выбрать , которая точка входа во время выполнения. С вашей IDE или аргументами командной строки.

    В вашем случае вы выбираете метод main() в классе Exercise02_19.

  5. Как сказал Алексис Павлидис:

    Класса Main нет, единственным требованием для приложения java является метод main. Таким образом, ваш класс может быть назван как угодно.

2 голосов
/ 03 февраля 2020

Открытие ваших файлов в редакторе или в IDEA не означает, что они закрыты или открыты для работы. Они просто открыты для модификации.

Чтобы запустить Java программу, вам нужен основной метод (если вы не используете фреймворк, который в этом случае скрыт от вас ). Все проходит через main, поэтому, если вы хотите использовать собственный класс, вы должны вызывать его через main.

Метод main выглядит следующим образом

public static void main(String[] args){
     // your code
}

Вы можете запустить программу либо используя IDEA, либо установив JDK, либо скомпилировав его с помощью javac, а затем запустив файл .class с помощью команды java. Есть много статей о том, как запустить вашу программу через CLI. Я бы рекомендовал сначала использовать CLI, чтобы понять, что происходит за кулисами JVM.

2 голосов
/ 03 февраля 2020

Он зависит не от имени класса, а от метода main, который является точкой входа для выполнения кода.

Этот метод должен быть определен внутри класса и выглядит именно так:

public static void main(String[] args){
// code goes here
}

Убедитесь, что этот метод существует только один раз в вашем приложении.

Чтобы быстро создать этот метод в IntelliJ, введите psvm и затем tab.

Имя класса, который вы используете для invoke JVM определяет, какой основной метод вызывается, когда вы определяете более одного основного метода.

0 голосов
/ 03 февраля 2020

A java программа будет всегда запускаться по методу main(). Вы можете представить его как точку входа.

Если вы хотите создать отдельные классы, вы должны вызывать их из основного метода. Вот пример:

Main. java

public class Main {

    public static void main(String[] args) {
        MyTestClass myInstanceOfIt = new MyTestClass();
        myInstanceOfIt.doSomething();
    }
}

MyTestClass. java

public class MyTestClass {

    public void doSomething() {
        //do something here
    }
}
...