【问题标题】:Open random website from list of sites each time button clicked每次单击按钮时从网站列表中打开随机网站
【发布时间】:2015-10-04 23:51:13
【问题描述】:
    private void button2_Click(object sender, EventArgs e)
    {
        Process.Start("http://google.com");
    }  

例如,当再次点击时,它有可能再次像 yahoo 甚至 google 一样打开。 试过了

    private void button2_Click(object sender, EventArgs e)
    {
        Process.Start("http://google.com");
        Process.Start("http://yahoo.com");
        Process.Start("http://stackoverflow.com");
    }  

但这会在我的默认浏览器中同时打开所有 3 个站点 每次单击按钮时,我希望它随机打开这 3 个站点中的 1 个。

【问题讨论】:

  • 您可以使用Random 类来选择一个随机数和一个switch 或一些if 语句。做一些谷歌搜索。
  • 首先,可以使用IP地址吗?否则您将如何获得随机网站?
  • dustin 我不希望它是随机的,我要自己添加网站的选项,我希望在单击按钮时随机选择打开。

标签: c# winforms button


【解决方案1】:

您可以创建一个字符串数组来保存站点地址,如下所示:

string[] sites = {
    "http://google.com",
    "http://yahoo.com",
    "http://stackoverflow.com" };

然后使用Random 类在单击按钮时选择其中一个站点:

private void button2_Click(object sender, EventArgs e)
{
    Random random = new Random();
    Process.Start(sites[random.Next(sites.Length)]);
}

随机类的Next方法会返回小于指定数字的值,所以不会出现数组越界异常

【讨论】:

【解决方案2】:

使用Random 类并将随机数限制在一个区间内:

Java 示例作为原始帖子没有用语言标记,对于 C# - 删除 final 并使用 System.Random 选择值:

private void button2_Click(object sender, EventArgs e)
{
    final String[] urls = {
      "http://google.com",
      "http://yahoo.com",
      "http://stackoverflow.com"
    };

    final int pick = (int)(Math.random() * urls.length);
    Process.Start(urls[pick]);
}  

【讨论】:

  • 它没有语言标签,我根据代码添加了C#。我认为 OP 的代码不是有效的 Java?
  • Process 使用继承自ComponentIDisposable。只是要记住的事情......因为你想妥善处理它。
  • 是的,对不起,我是该网站的新手,忘记添加什么语言,但它是 c#
【解决方案3】:

随机数生成器(在 c# 中应该是它的库。

在您的链接中添加几个变量,也许将它们存储在一个数组中。

然后在随机生成的索引处运行您对数组的那一行。

【讨论】:

    【解决方案4】:
    Random rnd = new Random();
    int website = rnd.Next(0, numOfWebsites);
    switch(website)
    {
        case 0:
        {
            Process.Start("http://google.com");
            break;
        }
        case 1:
        {
            Process.Start("http://yahoo.com");
            break;
        }
    }
    

    您可以使用 switch case 语句来提高随机数生成器的可读性。如果我犯了任何错误,我深表歉意,因为我很少使用 C#。 if else 语句也适用于这种情况。

    【讨论】:

    • 可能是从另一个项目复制和粘贴的,哈哈。我会解决的。
    • 它也应该是rnd.Next(0, numOfWebsites),否则你将永远无法访问google(并以case 0 开头)。和Process.Start 大写S
    • 'control cannot fall out of switch from final case label'显示字符串0和1的错误
    猜你喜欢
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多