嘿有无效的论据

时间:2016-11-07 02:30:14

标签: c# visual-c#-express-2010

我正在做一些功课而且我被卡住了,几乎所有东西似乎都正常工作,除了最后两行,我已经把东西转换成了一堆,我似乎无法做到正确。

家庭作业问题是

  

设计一个程序,要求用户输入一个字符串,然后将该字符串转换为摩尔斯电码。摩尔斯电码是一种代码,其中英文字母的每个字母,每个数字和各种标点符号由一系列点和短划线表示。表8-7显示了部分代码。

据我所知,字典条目应该正确转换所有字符,但我无法让程序运行,因为我猜我最后有无效的参数,我的代码副本在下面如果有人可以提供帮助,我会非常感激。我将评论它显示无效参数的位置。任何提示或推动正确的方向将非常感谢

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 MorseCode
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void convertbtn_Click(object sender, EventArgs e)
    {
        string input = userinput.Text.Trim();
        outputlabel.Text = mcodeconv(input);
    }
    private string mcodeconv(string input)
    {
        string codeConvert = string.Empty;
        Dictionary<string, string> newmorse = new Dictionary<string, string>        ();
        {
            newmorse.Add(" " , "space");
            newmorse.Add("," , "--..--");
            newmorse.Add("." , ".-.-.-");
            newmorse.Add("?" , "..--..");
            newmorse.Add("0" , "-----");
            newmorse.Add("1" , ".----");
            newmorse.Add("2" , "..---");
            newmorse.Add("3" , "...--");
            newmorse.Add("4" , "....-");
            newmorse.Add("5" , ".....");
            newmorse.Add("6" , "-....");
            newmorse.Add("7" , "--...");
            newmorse.Add("8" , "---..");
            newmorse.Add("9" , "----.");
            newmorse.Add("A" , ".-");
            newmorse.Add("B" , "-...");
            newmorse.Add("C" , "-.-.");
            newmorse.Add("D" , "-..");
            newmorse.Add("E" , ".");
            newmorse.Add("F" , "..-.");
            newmorse.Add("G" , "--.");
            newmorse.Add("H" , "....");
            newmorse.Add("I" , "..");
            newmorse.Add("J" , ".---");
            newmorse.Add("K" , "-.-");
            newmorse.Add("L" , ".-..");
            newmorse.Add("M" , "- --");
            newmorse.Add("N" , "-.");
            newmorse.Add("O" , "---");
            newmorse.Add("P" , ".--.");
            newmorse.Add("Q" , "--.-");
            newmorse.Add("R" , ".-.");
            newmorse.Add("S" , "…");
            newmorse.Add("T" , "-");
            newmorse.Add("U" , "..-");
            newmorse.Add("V" , "...-");
            newmorse.Add("W" , ".--");
            newmorse.Add("X" , "-..-");
            newmorse.Add("Y" , "-.--");
            newmorse.Add("Z" , "--..");
            KeyValuePair<string, string> newvalue = new KeyValuePair<string,     string>();
        };
        char newChar;
        foreach (char ex in input)
        {
            newChar = char.ToUpper(ex);
            if(newmorse.ContainsKey(newChar))  //it throws the error here
            {
                codeConvert += newmorse[newChar]; //it throws the error here
            }
            else
            {
                codeConvert += ex;
            }
        }
        return codeConvert;
    }
    private void exitbtn_Click(object sender, EventArgs e)
    {

    }
}
}

1 个答案:

答案 0 :(得分:4)

您应该在此使用Dictionary<char, string>并将.Add调用中的第一个参数更改为单引号。您的错误是因为您使用Dictionary参数使用string键查找char

例如:

Dictionary<char, string> newmorse = new Dictionary<char, string>();

newmorse.Add(' ' , "space");
newmorse.Add(',' , "--..--");
newmorse.Add('.' , ".-.-.-");
newmorse.Add('?' , "..--..");

// etc