【问题标题】:StringTokenizer error: incompatible types: Object cannot be converted to StringStringTokenizer 错误:不兼容的类型:对象无法转换为字符串
【发布时间】:2023-03-26 14:52:01
【问题描述】:

我的代码:

class Customer
{
String name_dob,name,dob,dd,mm,yyyy;
void stringTokenize()
{
    StringTokenizer st1 = new StringTokenizer(name_dob,",");
    name = st1.nextElement();
    dob = st1.nextElement();
    StringTokenizer st2 = new StringTokenizer(dob,"/");
    dd = st2.nextElement();
    mm = st2.nextElement();
    yyyy = st2.nextElement();
}
void display()
{
    System.out.println(name + "," + dd + "," + mm + "," + yyyy);
}
}
public class Main
{
public static void main(String[] args) {
    int i,n;
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter the number of data");
    n = sc.nextInt();
    Customer[] obj = new Customer[n];
    for(i=0;i<n;i++)
    {
        obj[i] = new Customer();
        System.out.println("Enter the data");
        obj[i].name_dob = sc.nextLine();
        obj[i].stringTokenize();
    }
    System.out.println("After tokenizing........");
    for(i=0;i<n;i++)
    {
        System.out.println("The data is");
        obj[i].display();
    }

}
}

我得到的错误

Main.java:23:错误:不兼容的类型:对象无法转换为字符串 名称 = st1.nextElement();

Main.java:24:错误:不兼容的类型:对象无法转换为字符串 dob = st1.nextElement();

Main.java:26:错误:不兼容的类型:对象无法转换为字符串 dd = st2.nextElement();

Main.java:27:错误:不兼容的类型:对象无法转换为字符串 mm = st2.nextElement();

Main.java:28:错误:不兼容的类型:对象无法转换为字符串 yyyy = st2.nextElement();

【问题讨论】:

  • 请注意,它在 Javadoc 中说:“StringTokenizer 是一个遗留类,出于兼容性原因,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人使用 split 方法字符串或 java.util.regex 包代替。”。或者,您也可以使用java.util.Scanner

标签: java java.util.scanner stringtokenizer


【解决方案1】:

使用nextToken 而不是nextElement

nextElement 的文档说:

返回与 nextToken 方法相同的值,只是它声明的返回值是 Object 而不是 String。

【讨论】:

  • 但是你能告诉我为什么以前没有工作吗??
  • 因为该方法返回一个对Object的引用,而编译器不知道它是否真的是一个String
【解决方案2】:

您可能想要使用nextToken 而不是nextObject。 或者使用nextObject 并将其转换为String,但这似乎是一种开销。

看看Javadoc

nextElement() 返回与 nextToken 方法相同的值,只是它声明的返回值是 Object 而不是 String。

【讨论】:

    猜你喜欢
    • 2014-05-25
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2018-07-05
    • 1970-01-01
    相关资源
    最近更新 更多