刚刚注册,这是我的第一个问题。我确实尝试过在这里和Google上进行搜索,但是找不到相关的答案。大多数答案(以及很多重复的问题)都是关于Java在对象和字符串之间进行选择(有时会选择整数)作为null值的默认值。
我正在尝试使用String参数重载方法,其中当没有输入(空String或“”)时调用不带参数的方法。基本上,这是一个简单的计分板,我只想在玩家在游戏结束时输入其姓名时才记录分数,否则仅显示现有的计分板。但是,即使使用空字符串,仍会添加用户条目。我知道我可以创建两种不同的方法,但是我正在尝试学习和实现方法重载。 “ listScoreBoard”是用于添加和显示计分板的二维ArrayList。
public static void displayScore (String playerName) {
listScoreBoard.add(Arrays.asList(playerName, playerScore));
displayScore();
}
public static void displayScore() {
System.out.println(listScoreBoard);
}
我对Java和编程非常陌生(大学的第一学期),如果这是一个非常简单的问题,我深表歉意。
答案 0 :(得分:0)
调用不带参数的字符串与带 null 或 empty 参数的字符串是有区别的。当您在不提供任何参数的情况下调用该方法时,它将使用没有参数的方法。当您使用 null 或空字符串调用该方法时,它将使用带有String参数的方法。
displayScore(null); // This calls displayScore (String playerName)
displayScore(""); // This calls displayScore (String playerName)
displayScore(); // This calls displayScore ()
答案 1 :(得分:0)
如果您致电,
displayScore("somestring") // first method is called
displayScore("") // first method is called
displayScore(null) // first method is called
displayScore() // second method is called
因此要调用第二个方法,必须不带参数地调用。也就是说,无论何时传递null
或empty(""
)或某些字符串,都会调用第一个方法。
答案 2 :(得分:0)
添加条件,该条件将检查是否没有通过玩家名,这将绕过添加到listScoreBoard的操作。
const request1 = this.http.get('/api/hello'); //return an observable
const request2 = this.http.get('/api/there') //return an observable
forkJoin([request1,request2]).subscribe((response)=>{
//after all the successful requests
//response.forEach((eachRes)=>{console.log(eachRes)});
//or response[0] , response[1]
});
}
答案 3 :(得分:0)
我正在尝试使用String参数重载方法,其中当没有输入(空String或“”)时调用不带参数的方法
由编译器选择在编译时应调用两种方法中的哪一种。在运行时无法确定重载方法的选择。
由于编译器在运行时不知道该值,因此您必须编写在字符串为null或为空时调用no-arg重载的逻辑。
public static void displayScore(String playerName) {
if (playerName == null || playerName.isEmpty()) {
displayScore();
return;
}
listScoreBoard.add(Arrays.asList(playerName, playerScore));
displayScore();
}
public static void displayScore() {
System.out.println(listScoreBoard);
}
或者,因为即使是非空输入,您也呼叫displayScore()
:
public static void displayScore(String playerName) {
if (playerName != null && ! playerName.isEmpty()) {
listScoreBoard.add(Arrays.asList(playerName, playerScore));
}
displayScore();
}
public static void displayScore() {
System.out.println(listScoreBoard);
}