public static int getDigit(char character, char letters[] )
{
int digit=0;
for (int i=0;i<=0;i++);
{
for (int j=0; j<(letters[i].length());j++)
{
if (letters[i][j]==character)
{
digit=i;
}
}
}
return digit;
}
其中数组是LETTERS = {(&#34; abc&#34;),(&#34; def&#34;),(&#34; ghi&#34;),(&#34; jkl&#34 ), (&#34; MNO)&#34),(&#34; PQRS&#34),(&#34; TUV&#34),(&#34; WXYZ&#34;)};和字符可以是任何字母。
我希望程序找到输入的字符并在字符串中显示该字符的位置。例如 - 如果用户输入字母&#34; g&#34;那么它应该显示数字3,因为它在数组的第3个元素中。
答案 0 :(得分:0)
这是您想要的工作实现。我假设您的letters
数组旨在成为2D锯齿状字符数组。您的原始代码实际上只有一些小问题,主要是在循环逻辑中。
public static int getDigit(char character, char letters[][]) {
int digit = -1; // return -1 if character not found
for (int i=0;i < letters.length; i++) {
for (int j=0; j < letters[i].length; j++) {
if (letters[i][j] == character) {
digit = i;
i = letters.length;
break;
}
}
}
return digit;
}
public static void main(String args[]) {
char[][] letters = new char[][] {
{ 'a', 'b', 'c' },
{ 'd', 'e', 'f' },
{ 'g', 'h', 'i' },
{ 'j', 'k', 'l' },
{ 'm', 'n', 'o' },
{ 'p', 'q', 'r', 's' },
{ 't', 'u', 'v' },
{ 'w', 'x', 'y', 'z' }};
System.out.println(getDigit('d', letters) );
}
答案 1 :(得分:-1)
真的不可能完全回答你的问题,因为除了“它不起作用”之外它没有说明问题是什么。
只是略读代码:您应该将行digit=i;
更改为return i + 1;
,因为您说如果“g”是第三个字符,它应该返回3。
此外,这个循环是无意义的for (int i=0;i<=0;i++);
它只会运行一次...同样在注释中指出@ bcsb1001时,循环结尾处的分号基本上结束了它,所以循环实际上是空!它应该是for (int i=0;i<letters.length();i++) {
此代码可能存在其他问题。你的分享不够。