【发布时间】:2015-11-15 07:29:53
【问题描述】:
我正在为聊天机器人编写石头剪刀布游戏。我遇到的问题是switch (playerChoice) 无法识别playerChoice 变量中定义的字符串。
当我运行开关时,默认情况总是输出。似乎它甚至没有在 switch() 中拾取变量
这是我的代码,带有 cmets:
var user = "user"
var message = "/rps rock" //this can be paper or scissors, based on the user's input.
//Here we find out what the player chose from the command '/rps [choice]'
var playerSaid = message.split(" ")
var playerChoice = playerSaid[1].toString()
//This determines the bot's choice of 1-3
var botChoice = (Math.floor(Math.random() * 3) + 1)
//This switch *should* find the user's choice
//The if statements inside each case should get the bot's choice and tell the verdict appropriately
switch (playerChoice) {
case "rock":
if (botChoice = 1) {
var rpsVerdict = "It\'s a tie!"
} else if (botChoice = 2) {
var rpsVerdict = "Botticus wins!"
} else if (botChoice = 3) {
var rpsVerdict = user + " wins!"
};
break;
case "paper":
if (botChoice = 1) {
var rpsVerdict = "It\'s a tie!"
} else if (botChoice = 2) {
var rpsVerdict = "Botticus wins!"
} else if (botChoice = 3) {
var rpsVerdict = user + " wins!"
};
break;
case "scissors":
if (botChoice = 1) {
var rpsVerdict = "It\'s a tie!"
} else if (botChoice = 2) {
var rpsVerdict = "Botticus wins!"
} else if (botChoice = 3) {
var rpsVerdict = user + " wins!"
};
break;
default:
var rpsVerdict = "default"
break
}
//Here we output a simple sentence telling who won.
console.log('You chose ' + playerChoice + '. I chose ' + botChoice + '. ' + rpsVerdict)
(我意识到 botChoice 输出的是数字,而不是字符串)
【问题讨论】:
-
我在日志中得到以下信息:你选择了摇滚。我选择了1。是平手!为我工作
-
我用调试器运行你的代码,我总是输入“摇滚”的情况——这一切似乎都对我有用。
-
旁注:您从
split获得的数组中的数组条目是字符串,因此无需对它们调用.toString()。 -
我建议您查看分号所在位置的规则。你已经在上面省略了大部分(这意味着你依赖于 JS 的“自动分号插入”纠错机制),但是有几个分散在错误的地方(你不想在例如,附加到
if或else的块)。还建议一次声明你的变量,而不是在10个不同的地方(在rpsVerdict的情况下)。在这里 JS 再次是宽松的,忽略重复的声明并将它们托管在函数顶部的控制结构之外,但是...... -
请注意,这是在 node.js 中运行的。
标签: javascript node.js