Могу ли я перенести данные, введенные пользователем, из одного пакета в другой?

Хорошо, я все еще новичок в Java и кое-что не могу понять. Я использую всю свою Java в Sublime 3, и я не использую IDE, поэтому мне приходится создавать все вручную (возможно, почему я не могу заставить это работать). Вот как выглядит мой код:

package charactername;

import java.util.*;
import java.io.*;
import java.util.Scanner.*;
import java.lang.Object.*;

public class UserNameInput {

  public static void main(String[] args){

    String playerNameF;
    String playerNameL;
    String checking;
    boolean valid = true;

    Scanner in = new Scanner(System.in);

    while(valid){
    System.out.println("Enter the first name of your character here: ");

    playerNameF = in.nextLine();

    System.out.println("Enter the last name of your character here:");

    playerNameL = in.nextLine();

    System.out.println("Your character name will be: \n" + playerNameF + " " + playerNameL + "\nIs this correct? y/n");

    checking = in.nextLine();
    if (checking.equals("n") || checking.equals("no")){
      System.out.println("Please re-enter your information and try again.");
    }else if (checking.equals("y") || checking.equals("yes")){
      System.out.println("Good luck in game!");
      break;
    }else{
      System.out.println("Sorry, I didn't quite understand your input. Please re-enter your information and try again.");
      valid = true;
      }
    }
  }
}

Могу я использовать playerNameL; playerNameF в совершенно отдельном пакете?

package gameintroduction.UserRegistration;

import charactername.*;
import java.util.*;
import java.io.*;
import java.util.Scanner.*;

  public class GettingStarted {
    public static void main(String[] args){

      UserNameInput cName = new UserNameInput();
      cName.playerNameF();
    }
  }

Я пытаюсь втянуть его сюда, но он говорит, что пакета не существует. Есть ли у импорта ограничения по объему? UserNameInput компилируется и запускается, даже если это некрасиво!

Я использую всю свою Java в Sublime 3, и я не использую IDE, поэтому мне приходится создавать все вручную (возможно, почему я не могу заставить это работать) Согласовано. Используйте IDE. Прекратите пытаться делать всю свою Java в Sublime 3. Я тоже заплатил за Sublime-лицензию. Это очень хороший текстовый редактор. Я не использую его для разработки на Java. Почему вы упорствуете в этом?
Elliott Frisch 10.01.2019 05:55

Мой брат, который начинал как программист на Java, а сейчас занимается с Руби, посоветовал мне использовать текстовые редакторы при обучении. IDE, такие как NetBeans, учат вас вредным привычкам и делают за вас вещи, которых вы, возможно, не понимаете. Щелкните правой кнопкой мыши и все ваши пакеты будут созданы и организованы для вас, затем еще один щелчок правой кнопкой мыши и все ваши сеттеры и геттеры созданы для вас без каких-либо подсказок относительно того, что происходит в бэкэнде. Стоит ли использовать IDE? Очень сложно найти ответы на вопросы, на которые можно ответить двумя щелчками правой кнопкой мыши в среде IDE.

KHall 10.01.2019 06:06

Вы должны определенно узнать, как использовать IDE, например. Eclipse или IntelliJ, потому что: (а) вы будете намного продуктивнее; (б) вы можете использовать отладчик; и (c) это будут ожидаемые знания, если вы в конечном итоге будете работать в отрасли в качестве разработчика. Я бы сказал, что использование IDE для выполнения шаблонной работы за вас - это хорошая привычка, а не плохая. Тем не менее, вы должны понимать, что IDE делает для вас в серверной части, например. когда он создает сеттеры и геттеры, но избегать использования IDE из-за этих проблем, на мой взгляд, очень плохой компромисс.

dave 10.01.2019 07:56

@KurtisHallquist Есть какая-то причина, по которой ты не обратился за помощью к своему брату, чей это совет? Когда я впервые изучил Java, не было IDE. Мой совет противоположен твоим братьям.

Elliott Frisch 10.01.2019 13:40

Спросить у брата не так-то просто. Во-первых, он чрезвычайно снисходительный и высокомерный, а во-вторых, я знаю, что могу сделать это без чьей-либо поддержки. Я просто ничего не понимал в этой конкретной проблеме, потому что все используют IDE, и это буквально 2 щелчка правой кнопкой мыши и устранение проблемы, с которой я столкнулся. Никто не использует командную строку и текстовые редакторы для java (если вы кого-то знаете, пришлите мне ссылку!). @ElliottFrisch Ты тоже делал каждую посылку вручную? скомпилировать все в cprompt? Вы бы порекомендовали IDE?

KHall 10.01.2019 16:11

@KurtisHallquist Вы тоже делали каждую упаковку вручную? Да. скомпилировать все в cprompt? Да. Хотя обычно можно написать сценарий муравья (или, по крайней мере, сценарий сборки). Сегодня это обычно делается с помощью maven (или sbt). Вы бы порекомендовали IDE?да.

Elliott Frisch 10.01.2019 17:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы объявляете playerNameF внутри main(), что означает, что эта переменная имеет область видимости внутри main() класса UserNameInput. Чтобы использовать его в другом классе, обозначьте эти переменные как переменные экземпляра со спецификатором общего доступа, как показано ниже. Также вместо использования main () внутри класса UserNameInput используйте метод экземпляра, например userInput(), и поместите в него всю логику вашего main () .

public class UserNameInput {
    public String playerNameF;
    public String playerNameL;
    public String checking;     

    public void userInput(){
        // your logic from main() comes here

    }
}

Теперь можно делать UserNameInput cName = new UserNameInput();cName.playerNameF; Теперь вы можете вызвать его из другого main(), как показано ниже:

public class GettingStarted {
    public static void main(String[] args){

      UserNameInput cName = new UserNameInput();
      cName.userInput();
    }
  }

Также вы можете получить доступ к переменным с помощью cName.playerNameF или cName.playerNameL.

Спасибо за вашу помощь! Похоже, я был близок, но недостаточно :). У меня все еще есть проблема, когда имя пакета не существует, когда я пытаюсь его импортировать, и поскольку он не может его найти; Я также получаю сообщение об ошибке: не могу найти символ для UserNameInput. Когда я запускаю свои программы в командной строке, всегда ли это должно быть .java, когда я запускаю имя файла? Например: я пишу простую программу, захожу в папку в cprompt, затем javac filex.java, тогда я должен иметь возможность java filex. Но командная строка сообщит, что не может его найти. Затем, когда я запускаю ту же программу, что и java filex.java, она работает.

KHall 10.01.2019 17:39

Другие вопросы по теме