#java #string #null #println
#java #строка #null #println
Вопрос:
Я не понимаю, почему Sp1.location возвращает NULL. Если я запускаю программу, она показывает, что я могу успешно инициализировать местоположение. Я аналогичным образом закодировал атрибут как целое число, но это не вызвало у меня никаких проблем.
public class Database {
static Scanner userInput = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Add a new spawnpoint.n");
System.out.println("State the name of this spawnpoint: ");
Spawnpoints Sp1 = new Spawnpoints(getSpawnName());
System.out.println("Done");
System.out.println("Location: " Sp1.getLocation()); //return as null
}
public static String spawnName;
public static String getSpawnName() {
spawnName = userInput.next();
return spawnName;
}
public void setSpawnName(String spawnName) {
this.spawnName = spawnName;
}
}
// Import libraries
import java.util.*;
Это мой другой класс
public class Spawnpoints extends Database {
// Define scanner, so you can accept user input
static Scanner userInput = new Scanner(System.in);
// Define attributes of Spawnpoints
private String location;
private String iniLocation;
// Creator, method for creating a instance of Spawnpoints. Will be the actual spawnpoints
// I include a iniLocation so no user input is asked when calling on getLocation.
public Spawnpoints(String spawnName) {
getIniLocation();
}
// Setters amp; Getters getLocation
private String getIniLocation() {
System.out.println("State the location of this spawnpoint:n");
pokemon = userInput.next ();
return iniLocation;
}
public void setIniLocation(String iniLocation) {
this.iniLocation = iniLocation;
}
public String getLocation() {
location = iniLocation;
return location;
}
public void setLocation(String location) {
this.location = location;
}
public static void main (String[] args) {
}
}
Ответ №1:
Поскольку вы не устанавливаете location
, вы назначаете ввод pokemon
вместо iniLocation
, и когда вы вызываете функцию для получения местоположения, вы получаете обратно значение iniLocation
, которому не было присвоено никакого значения, поэтому, следовательно, null . Читать комментарии в коде
private String getIniLocation() {
System.out.println("State the location of this spawnpoint:n");
pokemon = userInput.next (); // remove this
iniLocation = userInput.next (); // with this
return iniLocation;
}
и это хорошая практика, если вы инициализируете свой scanner
объект в конструкторе.
class AnyClass{
Scanner scan;
public AnyClass(){
scan= new Scanner(System.in);
}
}