我正在做一个程序,我需要返回第一次出现的MyString索引。 idk如何在这种情况下使用indexof。我想它可能是这样的 ch = indexof []但我不确定。我仍然是新的,api没有帮助我
/*********************************************************************************
This program will create classes that do similar operations to the Java String
Javier Perez
csc110
11/5/12
*********************************************************************************/
package string.assignment;
public class MyString
{
private char[] array;
private int size;
private int max;
public MyString()
{
array = new char[25];
max = 25;
}
public void setString(String newString)
{
if(newString.length() > 25)
{
System.out.println("/nEnter a number equal or less than 25 " );
}
else
{
for(int i=0; i < newString.length(); i++)
{
array[i] = newString.charAt(i);
}
}
}
public String toString()
{
return new String(array);
}
public char charAt(int index)
{
return array[index];
}
public boolean contains(char ch)
{
for(char c: array)
{
if(c == ch) return true;
}
return false;
}
public int indexOf( char ch )
{
ch = ch.indexOf();
}
return index;
}
答案 0 :(得分:1)
要从数组中获取某个字符的索引,您必须遍历数组,并将每个字符与要检查的字符进行比较。如果任何字符匹配,则立即返回索引。
此外,您的上一个return语句应该在您的方法中,否则您的代码将无法编译。
因此,最简单的indexOf
方法就是这样: -
public int indexOf( char ch ) {
for (int i = 0; i < array.length; i++) {
if (array[i] == ch) {
return i; // Character found, return current index
}
}
return -1; // Character not found. Return -1
}
答案 1 :(得分:1)
迭代您的字符数组,将所需字符与数组中索引处的字符匹配。如果找到匹配,则不是index
变量中具有默认值-1
的位置并打破循环。从方法中返回index
值。
public int indexOf( char ch ){
int index = -1;
for(int i=0; i < array.length; i++){
if(array[i] == ch){
index = i;//first match found, stop searching
break;
}
}
return index;
}
这样,它返回字符串字符数组中字符的第一个匹配位置,否则返回-1
。
答案 2 :(得分:1)
如果它确实编译了,那么你的剪切和粘贴很糟糕 - return index
最后做了什么?
无论如何 - 不是我使用了你自己的charAt
而不仅仅是一个字符比较。
public int indexOf( char ch )
{
int result = -1;
for(int i = 0; i < size; i++) {
if (charAt(i) == ch) {
result = i;
break;
}
}
return result;
}