Хорошо, я все еще новичок в 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, а сейчас занимается с Руби, посоветовал мне использовать текстовые редакторы при обучении. IDE, такие как NetBeans, учат вас вредным привычкам и делают за вас вещи, которых вы, возможно, не понимаете. Щелкните правой кнопкой мыши и все ваши пакеты будут созданы и организованы для вас, затем еще один щелчок правой кнопкой мыши и все ваши сеттеры и геттеры созданы для вас без каких-либо подсказок относительно того, что происходит в бэкэнде. Стоит ли использовать IDE? Очень сложно найти ответы на вопросы, на которые можно ответить двумя щелчками правой кнопкой мыши в среде IDE.
Вы должны определенно узнать, как использовать IDE, например. Eclipse или IntelliJ, потому что: (а) вы будете намного продуктивнее; (б) вы можете использовать отладчик; и (c) это будут ожидаемые знания, если вы в конечном итоге будете работать в отрасли в качестве разработчика. Я бы сказал, что использование IDE для выполнения шаблонной работы за вас - это хорошая привычка, а не плохая. Тем не менее, вы должны понимать, что IDE делает для вас в серверной части, например. когда он создает сеттеры и геттеры, но избегать использования IDE из-за этих проблем, на мой взгляд, очень плохой компромисс.
@KurtisHallquist Есть какая-то причина, по которой ты не обратился за помощью к своему брату, чей это совет? Когда я впервые изучил Java, не было IDE. Мой совет противоположен твоим братьям.
Спросить у брата не так-то просто. Во-первых, он чрезвычайно снисходительный и высокомерный, а во-вторых, я знаю, что могу сделать это без чьей-либо поддержки. Я просто ничего не понимал в этой конкретной проблеме, потому что все используют IDE, и это буквально 2 щелчка правой кнопкой мыши и устранение проблемы, с которой я столкнулся. Никто не использует командную строку и текстовые редакторы для java (если вы кого-то знаете, пришлите мне ссылку!). @ElliottFrisch Ты тоже делал каждую посылку вручную? скомпилировать все в cprompt? Вы бы порекомендовали IDE?
@KurtisHallquist Вы тоже делали каждую упаковку вручную? Да. скомпилировать все в cprompt? Да. Хотя обычно можно написать сценарий муравья (или, по крайней мере, сценарий сборки). Сегодня это обычно делается с помощью maven (или sbt). Вы бы порекомендовали IDE?да.




Вы объявляете 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, она работает.