创建一个名为IGPAY的GUI应用程序,允许用户输入单词。然后,当用户单击按钮时,程序将生成并显示该单词的Pig Latin等效项。 (要做到这一点,你删除单词的第一个字母,然后将该字母添加到单词的末尾加上字母“ay”。例如,鱼将成为ishfay,而球将成为allbay。)确保GUI具有吸引力在外观上,所有标签,文本框,按钮和类似物都有清晰的标签。提示:将单词存储在字符串中并考虑使用Substring方法。还要记住字符串的Length属性会告诉你它的长度。有关示例,请参见本文第79-80页。
这是我提出的代码。我是这门语言的新手,对Python有一点了解,但我只是不明白为什么它会引发“超出范围异常”的错误。我试图让它成为代码接受任何单词并在猪拉丁文中显示它。
library.zip
答案 0 :(得分:3)
不确定为什么你有一个downvote,好工作宣布这是家庭作业,至少提供一些你已经完成的工作。除此之外,这里的每个人都应该感谢你想要学习。
如果我是你,我会考虑一些事情。除了应该修复你的异常的Phylyp的答案之外,如果用户输入少于两个字符,你也应该处理,这也可能导致异常。
下面我展示一下你可以做的三件事的例子。不是说这是最好的方式,但它是一种选择。
检查输入的字符串以确保它至少是两个字符,如果没有,则提示用户。
使用一个string.Format调用减少字符串变量和声明行的数量。
private void Button1_Click(object sender, EventArgs e)
{
const string suffix = "ay";
string enteredString = textBox1.Text;
//Check the length to make sure it is at least 2
if(enteredString.Length < 2)
{
MessageBox.Show("Please enter at least 2 or more characters");
return;
}
//We get here if 2 or more characters were entered.
//Lets go ahead an process our string
label2.Text = string.Format("{0}{1}{2}",
enteredString.Substring(1),
enteredString.Substring(0,1),
suffix);
}
编辑 - 我已经将上面的答案编辑到了你真正想要的东西,它只是1的第一个子字符串,它将在第一个字母后面给你字符串中的所有内容。基本上,你是说给我从第1位开始的字符串,或第二个字母。然后,第二个变量说给我从位置0开始的字符串,只有1个字符的长度。这基本上只给你第一个字母。所以,这会给你你想要的。结合检查以确保输入至少两个字符,并且您不应该有任何例外。
希望这有帮助!
答案 1 :(得分:1)
first = word.Substring(0, 1);
rest = word.Substring(1, word.Length - 1);
由于Substring()
方法从零开始,word.Length
在字符串之外。将第二个参数更改为word.Length - 1
可以避免错误。
此外,由于您只需要第一个字符,因此第一次调用Substring()
时应将第二个参数设为1。
很好,你已经把它称为家庭作业并且已经提供了你尝试过的代码。
(编辑以结合Rob关于.Substring(1)
的非常正确的评论)