所以我正在尝试制作一个简单的骰子滚动程序,我将在未来的项目中使用但是我遇到了一些问题。我希望能够选择2个随机数,然后将这些数字放入文本框中的句子中。当然我意识到我无法将整数与字符串连接起来,所以起初我尝试将整数转换为字符串,但这不起作用。所以现在我有了这个:
Random r1 = new Random();
Random r2 = new Random();
int dice1Number;
int dice2Number;
string dice1Text;
string dice2Text;
private void button1_Click(object sender, EventArgs e)
{
var r1 = new Random();
dice1Number = r1.Next(1, 6);
var r2 = new Random();
dice2Number = r2.Next(1, 6);
if (dice1Number == 1)
{
dice1Text = "1";
}
else if (dice1Number == 1)
{
dice1Text = "2";
}
else if (dice1Number == 1)
{
dice1Text = "3";
}
else if (dice1Number == 1)
{
dice1Text = "4";
}
else if (dice1Number == 1)
{
dice1Text = "5";
}
else if (dice1Number == 1)
{
dice1Text = "6";
}
if (dice2Number == 1)
{
dice2Text = "1";
}
else if (dice2Number == 1)
{
dice2Text = "2";
}
else if (dice2Number == 1)
{
dice2Text = "3";
}
else if (dice2Number == 1)
{
dice2Text = "4";
}
else if (dice2Number == 1)
{
dice2Text = "5";
}
else if (dice2Number == 1)
{
dice2Text = "6";
}
textBox1.Text = "You rolled " + dice1Text ", " + dice2Text;
}
我认为这种方法可能效果更好但现在我收到的错误是“只有赋值,调用,递增,递减和新对象表达式才能用作语句”。知道如何解决这个问题或其他方式我可以做到这一点吗?
答案 0 :(得分:5)
您应该可以使用string.Format
string.Format("You rolled {0},{1}", dice1Number, dice2Number);
这样你不需要大if
块。您还可以将int
转换为如下字符串:
dice1Number.ToString();
这会将其转换为字符串。
在不相关的注释中 - 您有一个全局Random
r1,但随后在您的方法中重新声明它。您应该只重用Random对象,而不为要生成的每个随机数声明一个新对象。
要清理此代码(假设您不需要存储骰子卷,只想显示已滚动的内容),您可以更改按钮点击代码,如下所示:
private Random _rand = new Random();
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = string.Format("You rolled {0}, {1}", _rand.Next(1,7), _rand.Next(1,7);
}
答案 1 :(得分:0)
你可以像这样连接整数和字符串。
String test = String.Concat("something", 0);
答案 2 :(得分:0)
这应该是你想要的。
var rnd = new Random();
var d1 = rnd.Next(1, 7), d2 = rnd.Next(1, 7);
String.Concat("You rolled ", String.Join(", ", d1.ToString(), d2.ToString()));
请记住,上限是独占的。