【问题标题】:How do I get my If else loop to loop through an array C# .NET如何让我的 If else 循环遍历数组 C# .NET
【发布时间】:2016-05-10 11:30:25
【问题描述】:

我得到了一个包含 10 个项目的列表。

当用户在“listText”中输入一个值时,它会与 displayArraysString 中的第一项进行比较。

假设它不是 displayArraysString 列表中的第一项,那么它什么也不做(因为我没有循环)

如何创建一个循环来检查我的列表并在找到它后显示消息框。我尝试了一个 try catch 循环,但这对我不起作用。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Arrays
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int[] numbers = new int[5];
        List<int> numbersList = new List<int> ();
        string text = System.IO.File.ReadAllText(@"C:Directory\list.txt");

        private void Form1_Load(object sender, EventArgs e)
        {
            //numbers[0] = 12;
            //numbers[1] = 10;
            //numbers[2] = 25;
            //numbers[3] = 10;
            //numbers[4] = 15;
            //numbersList.Add(23);
            //numbersList.Add(32);
            //numbersList.Add(35);
        }
        //Array Print
        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < numbers.Length; i++)
            displayArrays.Text += numbers[i].ToString() + ", ";
        }
        //List Print
        private void button2_Click(object sender, EventArgs e)
         {
            for (int o = 0; o < text.Length; o++)
            {
                displayArraysString.Text += text[o].ToString();

                if (listText.Text == displayArraysString.Text)
                {
                    MessageBox.Show("Found a match!");

                }
                else
                {
                   //Something.
                }




            }
         }
    }
}

【问题讨论】:

  • 你的 button2 点击方法有什么问题?什么方式不工作,你试过调试吗?
  • “displayArrays”和“displayArraysString”的类型是什么
  • 我的坏人!它确实有效,但它只在文本文件中寻找列表中的第一个。让我演示!将更新我的问题

标签: c# .net arrays list loops


【解决方案1】:

你在这里尝试了一些错误, 作为您从 string 中的路径读取的文件,它将匹配 listText 的单个字符,因此永远不会匹配, 我使用字符串数组来完成,将文本数据转换为其中每个单词的字符串数组。如果您现在搜索,则将为 listText 找到匹配项。

试试这个代码:

     namespace Arrays
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int[] numbers = new int[5];
        List<int> numbersList = new List<int> ();
        string text = System.IO.File.ReadAllText.Text(@"C:\Directory\list.txt");
        string[] displayStringArrays = null; 

        private void Form1_Load(object sender, EventArgs e)
        {
            //numbers[0] = 12;
            //numbers[1] = 10;
            //numbers[2] = 25;
            //numbers[3] = 10;
            //numbers[4] = 15;
            //numbersList.Add(23);
            //numbersList.Add(32);
            //numbersList.Add(35);
        }
        //Array Print
        private void button1_Click(object sender, EventArgs e)
        {
            displayArrays.Text = listText.Text;
        }
        //List Print
        private void button2_Click(object sender, EventArgs e)
         {
            displayStringArrays = text.Split('\n').ToArray();
            foreach (var item in displayStringArrays)
            {
                displayArraysString.Text += item;

                 if (listText.Text == item.Substring(0, item.Length - 1) || listText.Text == item)
                {
                     MessageBox.Show("Found a match!");
                }
                else
                {
                    //Something.
                }
            }

         }
    }
}

用您的代码替换此代码。我检查了它现在工作正常。

【讨论】:

  • 正如您在我的 gif 中看到的那样,它正在工作,我只需要循环遍历我的文本文档中的其他 9 个项目
  • 它不像你看到的那样工作,它从文件中读取单个字符并将其显示在文本框中,但你正在将它与整个单词进行比较,这永远不会匹配尝试我的代码,它会起作用的。
  • 如果这不起作用将 Split(' ') 替换为 Split('\n') 那么它会起作用。
  • 那个代码现在连第一个都不匹配了,dafuq。
  • 还有一件事是在您的情况下为第一个显示匹配的消息,因为对于第一行,当它打印在文本框中时,它完全覆盖了整个单词,然后显示消息.但后来这个词超过了其他字符,永远不会是一个math。
猜你喜欢
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
相关资源
最近更新 更多