通过改变方法的位置,我的价值观正在改变

时间:2017-11-26 19:38:59

标签: c#

我正在研究c#制作程序,用于检查元音,辅音,字符,单词和句子数量。 。我的计划工作得很好,但我的 问题是改变我应用它们的方法的位置。

这是程序 方法字符我使用辅音

的方法单词(whick基本上计算空格)相同

问题是我需要将主要方法应用于我创建它的顺序 单词&gt;句子&gt;元音&gt;字符&gt; COnsonants < / STRONG>” 如果我订购了订单,我会得到错误的答案

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Task_Raza_Class
{
class Program
{
    static void Main(string[] args)
    {
        string state;
        Console.WriteLine("Enter an Statement / Sentance \nPress Enter to Continue..");
        state = Console.ReadLine();

        raza task = new raza();
        // Words>Sentances>Vowels>Characters>COnsonents
        Console.WriteLine("Words"+task.words(state));
        Console.WriteLine("No of Sentances"+task.tances(state));
        Console.WriteLine("Vowels"+task.vowels(state));
        Console.WriteLine("Characters"+task.characters(state));
        Console.WriteLine("Consonents"+task.consonents(state));


        Console.ReadKey();
    }
  }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Task_Raza_Class
{
class raza
{
    public  int cw , cv , cc , cp , cchar ;

    public raza()
    {
        cw = 1; cv = cc = cp = cchar = 0;

    }
    public int words(string state)
    {
        char[] s_arr = new char[200];
        s_arr = state.ToCharArray();
        for (int i = 0; i < s_arr.Length; i++)
        {
            if(s_arr[i]==' ')
            {
                cw++;
            }
        }
        return (cw);
    }
    public int tances(string state)
    {
        char[] s_arr = new char[200];
        s_arr = state.ToCharArray();
        for (int i = 0; i < s_arr.Length; i++)
        {
            if (s_arr[i] == '.')
            {
                cp++;
            }
        }
        return (cp);
    }
    public int vowels(string state)
    {
        char[] s_arr = new char[200];
        s_arr = state.ToCharArray();
        for (int i = 0; i < s_arr.Length; i++)
        {
            if (s_arr[i] == 'a' || s_arr[i] == 'A' || s_arr[i] == 'e' || s_arr[i] == 'E' || s_arr[i] == 'i' || s_arr[i] == 'I' || s_arr[i] == 'o' || s_arr[i] == 'O' || s_arr[i] == 'u' || s_arr[i] == 'U')
            {
                cv++;
            }
        }
        return (cv);
    }
    public int characters(string state)
    {
        char[] s_arr = new char[200];
        s_arr = state.ToCharArray();
        cchar = s_arr.Lenght - words(state)-1
        return (cchar);
    }
    public int consonents(string state)
    {
        char[] s_arr = new char[200];
        s_arr = state.ToCharArray();
        cc = characters(state)-vowels(state);
        return (cc);
    }
}
}

1 个答案:

答案 0 :(得分:1)

问题是ccharcv是成员字段,其值在调用之间保持不变。由于consonents调用了charactersvowels,因此这两个函数会被调用两次,而第二次调用时会有第一次调用剩余的值。您的raza类中不需要任何成员字段 - 它们都可以是局部变量。或者,您可以设计raza以接受构造函数中的state参数,然后调用charactersconsonents并更改vowels以重用{{1}中的值1}}和cchar

(BTW正确的英文拼写是“辅音”和“句子”)