java - 在 Java/jGrasp 中找不到 indexOf() 符号

标签 java arraylist 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 列表是一个非通用的 Object ArrayList,这就是它所知道的全部内容。是的,它实际上可能保存字符串,但 ArrayList 本身不知道这一点,因此编译器只知道 list.get(w)返回一个对象而不是字符串类型。由于对象没有 indexOf(...)方法,你遇到了问题。您有两种可能的解决方案

  1. 使用强制转换将返回的对象强制转换为字符串:

 x = ((String) list.get(w)).indexOf('*')`
  • 或者使用通用列表:List<String> list = new ArrayList<>(); ,其中知道列表知道它包含字符串并且 get(w)将返回一个 String 对象。第二种方法更干净,因为这样编译器将不允许您将非 String 对象添加到列表中,从而使代码更安全并且不易出现错误。
  • 关于java - 在 Java/jGrasp 中找不到 indexOf() 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40709859/

    相关文章:

    java - 检查 tpl-if-tag,gxt 模板中的字符是否为中文

    Java - 计算大字符串中的音节

    java - Android ArrayList 删除只是简单不起作用

    java - 错误 : module not found: javafx. 控制 1 错误

    java - NetBeans 或 Eclipse 相当于 jGrasp 的调试对象查看器?

    java - Pig Latin 程序的输出存在问题

    Java RMI 不适用于多个服务器 - 安全

    java - 将堆栈元素移回到单链表

    java - 无法为 tomcat jvm 公开 Java Instrumentation

    java - 如何访问java中对象的通用数组列表中的项目字段?