在 Java/jGrasp 中找不到 indexOf() 符号
Cannot find indexOf() symbol in Java/jGrasp
我正在编写代码,其中用户将某些单词输入到数组列表中,每个单词中都带有通配符 *
符号。然后,一旦用户完成添加单词,我会要求用户提供第二个字符串,并将每个单词中的 *
替换为第二个字符串。
我的问题是我正在尝试使用 .indexOf('*')
来查找每个单词中 *
的位置,但是 jGrasp 一直说找不到符号。
import java.util.Scanner;
import java.util.ArrayList;
class Assignment5 {
public static void main(String[] args)
{
Scanner scan = new Scanner (System.in);
System.out.println("Enter some words, done to stop");
ArrayList list = new ArrayList();
String e = " ";
int i;
for (i = 0; i < 100; i+=0){
e = scan.nextLine();
if (e.equals("done")){
i = 100;}
else{
list.add(e);}
}
System.out.println("Enter the replacement string");
String s = scan.nextLine();
int w;
int x;
for (w = 0; w < list.size(); w++){
x = list.get(w).indexOf('*')
if (x != -1){
list.set(x, s);}
}
System.out.println(list);
}
}
您的 ArrayList 列表是对象的非泛型 ArrayList,这就是它所知道的全部内容。是的,它实际上可能包含字符串,但 ArrayList 本身并不知道这一点,因此编译器只知道 list.get(w)
return 是一个 Object 而不是 String 类型。由于 Object 没有 indexOf(...)
方法,因此您 运行 遇到了问题。您有两种可能的解决方案
- 使用强制转换将对象 return 转换为字符串:
x = ((String) list.get(w)).indexOf('*')`
- 或使用通用列表:
List<String> list = new ArrayList<>();
,其中知道该列表知道它包含字符串,并且 get(w)
将 return 一个字符串对象。第二种方式更简洁,因为这样编译器将不允许您将非字符串对象添加到列表中,从而使代码更安全且不易出错。
我正在编写代码,其中用户将某些单词输入到数组列表中,每个单词中都带有通配符 *
符号。然后,一旦用户完成添加单词,我会要求用户提供第二个字符串,并将每个单词中的 *
替换为第二个字符串。
我的问题是我正在尝试使用 .indexOf('*')
来查找每个单词中 *
的位置,但是 jGrasp 一直说找不到符号。
import java.util.Scanner;
import java.util.ArrayList;
class Assignment5 {
public static void main(String[] args)
{
Scanner scan = new Scanner (System.in);
System.out.println("Enter some words, done to stop");
ArrayList list = new ArrayList();
String e = " ";
int i;
for (i = 0; i < 100; i+=0){
e = scan.nextLine();
if (e.equals("done")){
i = 100;}
else{
list.add(e);}
}
System.out.println("Enter the replacement string");
String s = scan.nextLine();
int w;
int x;
for (w = 0; w < list.size(); w++){
x = list.get(w).indexOf('*')
if (x != -1){
list.set(x, s);}
}
System.out.println(list);
}
}
您的 ArrayList 列表是对象的非泛型 ArrayList,这就是它所知道的全部内容。是的,它实际上可能包含字符串,但 ArrayList 本身并不知道这一点,因此编译器只知道 list.get(w)
return 是一个 Object 而不是 String 类型。由于 Object 没有 indexOf(...)
方法,因此您 运行 遇到了问题。您有两种可能的解决方案
- 使用强制转换将对象 return 转换为字符串:
x = ((String) list.get(w)).indexOf('*')`
- 或使用通用列表:
List<String> list = new ArrayList<>();
,其中知道该列表知道它包含字符串,并且get(w)
将 return 一个字符串对象。第二种方式更简洁,因为这样编译器将不允许您将非字符串对象添加到列表中,从而使代码更安全且不易出错。