输入一串字符,统计各字母出现的次数(大小写字母不区分)。 Private

输入一串字符,统计各字母出现的次数(大小写字母不区分)。
Private Sub Command1_Click()
Dim c As String, x%, a(1 To 26) As Integer
For i = 1 To Len(Text1.Text)
c = UCase(Mid(Text1.Text, i, 1))
If c >= "A" And c <= "Z" Then
j = Asc(c) - 64
a(j) = a(j) + 1
End If
Next i
For j = 1 To 26
Picture1.Print Chr(j + 64) & "=" & "a(j)";
Next j
End Sub
为什么运行后不输入任何东西和输入字母的效果都是A=a(j)B=a(j)...Z=a(j)

为什么运行后不输入任何东西和输入字母的效果都是A=a(j)B=a(j)...Z=a(j)?

因为你将表达式变成了字符串,"a(j)"是字符串,a(j)才是输出数组:

将

Picture1.Print Chr(j + 64) & "=" & "a(j)";

修改成:

Picture1.Print Chr(j + 64) & "=" & a(j);追问

这样改了以后还是不对呀,,,

追答

哪不对啊?如果你说的不对是 Picture1.Print 那估计是不对,你将

Picture1.Print Chr(j + 64) & "=" & a(j);

改成

MsgBox Chr(j + 64) & "=" & a(j);

就可以看到结果了,但不知道你的 Picture1.Print 是准备干什么的。

追问

Picture1.Print 就是在picture1上打印结果。。改了也还不对。。。。

追答

以下是我修改的代码,经测试运行正常:

Private Sub Command1_Click()
Dim c As String, x%, a(1 To 26) As Integer
For i = 1 To Len(Text1.Text)
c = UCase(Mid(Text1.Text, i, 1))
If c >= "A" And c <= "Z" Then
j = Asc(c) - 64
a(j) = a(j) + 1
End If
Next i
For j = 1 To 26
MsgBox Chr(j + 64) & "=" & a(j)
Next j
End Sub

温馨提示:答案为网友推荐,仅供参考
相似回答