我需要知道如何测试一个值是否不等于多个java字符串
我该怎么做? 我想测试符号行2(1)是否等于“关闭”或“打开”,如果不是,我想说,请指定其是否打开或关闭,它表示如果我键入“打开”或“关闭” 在| |不起作用的地方我需要知道如何测试一个值是否不等于多个java字符串,java,minecraft,bukkit,Java,Minecraft,Bukkit,我该怎么做? 我想测试符号行2(1)是否等于“关闭”或“打开”,如果不是,我想说,请指定其是否打开或关闭,它表示如果我键入“打开”或“关闭” 在| |不起作用的地方 package me.mcmatt.shops; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.block.Block; import org.bukkit.block.Sign
package me.mcmatt.shops;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.event.player.PlayerInteractEvent;
public class Signs implements Listener {
@EventHandler
public void onSignChange(SignChangeEvent e) {
if (e.getLine(0).equalsIgnoreCase("[shop]")) {
Block attached = e.getBlock().getRelative(0, -1, 0);
String name = e.getPlayer().getDisplayName();
if (!(attached.getType() == Material.CHEST))
e.getPlayer().sendMessage(ChatColor.RED + "Please place the shop on a chest!");
else {
if (!e.getPlayer().hasPermission("shops.create"))
e.getPlayer().sendMessage(ChatColor.RED + "You don't have permission to create a shop! (shops.create)");
else {
if (!e.getLine(1).equalsIgnoreCase("open") || (!e.getLine(1).equalsIgnoreCase("closed"))) {
e.getPlayer().sendMessage(ChatColor.RED + "You must specify if the shop is open or closed on the second line!");
} else {
Sign o = (Sign) e.getBlock().getState();
String p = o.getLine(1);
e.setLine(0, "§9[Shop]");
e.setLine(1, "§4" + name + "'s");
e.setLine(2, "§4Shop");
e.setLine(3, p);
e.getPlayer().sendMessage(ChatColor.GREEN + "Shop Created!");
e.getPlayer().playSound(e.getPlayer().getLocation(), Sound.LEVEL_UP, 10, 10);
}
}
}
}
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent e) {
if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
Player p = e.getPlayer();
Block b = e.getClickedBlock();
Material m = b.getType();
if (!(m == Material.SIGN_POST)) {
return;
} else {
Sign sign = (Sign) e.getClickedBlock().getState();
if ((sign.getLine(0).equalsIgnoreCase("§9[Shop]"))) {
p.sendMessage("I right clicked the sign!");
}
}
}
}
}
您可以创建要比较的字符串列表,然后使用
列表。contains
方法:
if (!Arrays.asList("open", "closed").contains(e.getLine(1).toLowerCase()) {...
你的代码不起作用的原因是因为德摩根定律 给定两个语句,A和B。如果不希望A或B为真
(!A)或(!B)
不正确
(!A)和(!B)
正确或!(A或B)
在逻辑上是等效的。谢谢,它起作用了!代码中还有一个问题,您可能会看到,在创建it shop时,我试图将第1行复制到第3行,但它不起作用…可能是重复的