如果玩家键入 /launch <notaninteger> 或 /launch String,我如何让我的代码 return 向玩家发送 "Invalid number" 消息
How can I make my code return a "Invalid number" message to a player if they type /launch <notaninteger> or /launch String
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class launch implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (label.equalsIgnoreCase("launch") || label.equalsIgnoreCase("l")) {
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &4Invalid Entity"));
return true;
}
Player player = (Player) sender;
//Does /launch or /launch <amplifier>
if (args.length == 0) {
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &2Launching in &a3"));
try {
Thread.sleep(1000);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &2Launching in &62"));
} catch (InterruptedException e) {
System.err.println(e.getMessage());
}
try {
Thread.sleep(1000);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &2Launching in &c1"));
} catch (InterruptedException e) {
System.err.println(e.getMessage());
}
player.setVelocity(player.getLocation().getDirection().multiply(2).setY(1.5));
return true;
}
//Launch but with args
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &2Launching in &a3"));
try {
Thread.sleep(1000);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &2Launching in &62"));
} catch (InterruptedException e) {
System.err.println(e.getMessage());
}
try {
Thread.sleep(1000);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &2Launching in &c1"));
} catch (InterruptedException e) {
System.err.println(e.getMessage());
}
player.setVelocity(player.getLocation().getDirection().multiply(Integer.parseInt(args[0])).setY(1.5));
player.setHealth(20.0);
return true;
}
return false;
}}
也许我可以添加 if 语句或带有 NonIntegerException 的 catch?
请耐心等待,因为我是一名新的年轻开发人员,我已经看到如果有人不知道如何正确格式化问题,人们会得到 upset/angry。
再一次,如标题所示,我的问题是:
如果玩家键入 /launch 或 /launch String
,我如何让我的代码 return 向玩家发送“无效数字”消息
在“//Launch but with args”之后,您必须检查 args[0]
是否为整数。我建议为此定义一个方法:
public boolean isInteger(String arg) {
try {
Integer.parseInt(arg);
} catch (NumberFormatException e) {
return false;
}
return true;
}
然后在开始倒计时之前,您可以添加如下内容:
if (!isInteger(args[0])) {
player.sendMessage("Invalid number");
return true;
}
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class launch implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (label.equalsIgnoreCase("launch") || label.equalsIgnoreCase("l")) {
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &4Invalid Entity"));
return true;
}
Player player = (Player) sender;
//Does /launch or /launch <amplifier>
if (args.length == 0) {
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &2Launching in &a3"));
try {
Thread.sleep(1000);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &2Launching in &62"));
} catch (InterruptedException e) {
System.err.println(e.getMessage());
}
try {
Thread.sleep(1000);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &2Launching in &c1"));
} catch (InterruptedException e) {
System.err.println(e.getMessage());
}
player.setVelocity(player.getLocation().getDirection().multiply(2).setY(1.5));
return true;
}
//Launch but with args
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &2Launching in &a3"));
try {
Thread.sleep(1000);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &2Launching in &62"));
} catch (InterruptedException e) {
System.err.println(e.getMessage());
}
try {
Thread.sleep(1000);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[&dHi&bMessage&7] &2Launching in &c1"));
} catch (InterruptedException e) {
System.err.println(e.getMessage());
}
player.setVelocity(player.getLocation().getDirection().multiply(Integer.parseInt(args[0])).setY(1.5));
player.setHealth(20.0);
return true;
}
return false;
}}
也许我可以添加 if 语句或带有 NonIntegerException 的 catch? 请耐心等待,因为我是一名新的年轻开发人员,我已经看到如果有人不知道如何正确格式化问题,人们会得到 upset/angry。 再一次,如标题所示,我的问题是: 如果玩家键入 /launch 或 /launch String
,我如何让我的代码 return 向玩家发送“无效数字”消息在“//Launch but with args”之后,您必须检查 args[0]
是否为整数。我建议为此定义一个方法:
public boolean isInteger(String arg) {
try {
Integer.parseInt(arg);
} catch (NumberFormatException e) {
return false;
}
return true;
}
然后在开始倒计时之前,您可以添加如下内容:
if (!isInteger(args[0])) {
player.sendMessage("Invalid number");
return true;
}