在方法返回字符串中使用do while语句

时间:2016-10-08 19:35:09

标签: c#

我正在为购物系统编写程序。在这里我使用数组从用户的品牌名称获取输入。我正在使用返回字符串的方法来获取输入。以下是代码:

public class Brand{
 private string brandName;

    public string BrandName
    {
        get { return brandName; }
        set { brandName = value; }
    }
    public string getBrandName()
    {
        string[] brands = new string[5];
        brands[0] = "Honda";
        brands[1] = "Suzuki";
        brands[2] = "Ferrari";
        brands[3] = "BMW";
        brands[4] = "Toyota";
        Console.WriteLine("Please enter the brand name from the above given   brands..");
        string temp = Console.ReadLine();
        do
        {
            try
            {
                for (int i = 0; i < 6; i++)
                {
                    if (brands[i].Contains(temp))
                    {
                        this.BrandName = temp;
                        break;

                    }

                }
                return this.BrandName;
            }
            catch
            {
                Console.WriteLine("Your provide brand does not match with the database in our system. Please try another one.");
            }
        } while (BrandName!=temp);



    }

    }

问题在于我处于初级水平并且没有得到应该在这个while语句中应该是什么,它循环并要求用户一次又一次地输入,直到他输入正确的品牌名称。请帮我。

3 个答案:

答案 0 :(得分:2)

根据您的代码,这可能会有效:

public string getBrandName()
{
    string[] brands = new string[5];
    brands[0] = "Honda";
    brands[1] = "Suzuki";
    brands[2] = "Ferrari";
    brands[3] = "BMW";
    brands[4] = "Toyota";
    Console.WriteLine("Please enter the brand name from the above given   brands..");
    string temp = Console.ReadLine();
    while(!brand.Contains(temp))
    {
        Console.WriteLine("Your provide brand does not match with the database in our system. Please try another one.");
        temp = Console.ReadLine();
    }
    return temp;
}

很少有注意事项:

  1. 我们会要求用户提供品牌名称。

  2. 我们将检查输入是品牌列表中的品牌(您使用包含来检查输入是否在每个品牌名称的字符数组中,注意区别)。

  3. 如果名称在列表中,我们将不会进入循环内部 将返回品牌名称。

  4. 如果名称不在列表中,我们将再次要求用户插入 有效的品牌名称,直到他进入任何,然后我们将返回它。

答案 1 :(得分:0)

如果您只有4个品牌,那么您可以在while循环中尝试或声明所有品牌

while (input== 'brand1'||'brand2')

或者如果您的列表太大,那么您可以将它们放入arraylist

像这样

List <String> listClone = new ArrayList<String>(); 
       for (String string : list) {
           if(string.matches("(?i)(bea).*")){
               listClone.add(string);
           }
       }
    System.out.println(listClone);

答案 2 :(得分:0)

  1. 这里有一个outOfRange异常: for(int i = 0; i&lt; 6; i ++) 因为品牌[5]的数组范围超出了范围。
  2. 当输入字符串是指定字符串的子字符串而不是equel时,函数包含返回true或false !!!
  3. 只有在有异常时才到达此行: Console.WriteLine(&#34;您提供的品牌与我们系统中的数据库不匹配。请尝试另一个品牌。&#34;);
  4. 检查以下代码 - 它运作良好:

    课程计划     {         static void Main(string [] args)         {             品牌=新品牌();            string brandName = brand.getBrandName();            Console.WriteLine(&#34;您输入正确的品牌名称!!!&#34;);            Console.WriteLine(名优产品);            到Console.ReadLine();         }

    {{1}}