用java编写一个递归函数,使用字符串标记器查找并打印给定字符串上的标记
我正在发送一个StringTokenizer对象及其长度用java编写一个递归函数,使用字符串标记器查找并打印给定字符串上的标记,java,recursion,Java,Recursion,我正在发送一个StringTokenizer对象及其长度 import java.util.StringTokenizer; import java.util.Scanner; class test2 { public String display(StringTokenizer st1,String str1,int l) { int counter = 0; if(st1.nextToken()==' '||st1.equals(".")
import java.util.StringTokenizer;
import java.util.Scanner;
class test2
{
public String display(StringTokenizer st1,String str1,int l)
{
int counter = 0;
if(st1.nextToken()==' '||st1.equals("."))
return(str1);
else
{
str1 = st1.nextToken();
return(display(st1,str1,l));
}
}
public static void main()
{
StringTokenizer st = new StringTokenizer("Mount Carmel .");
String str2 = "";
test2 obj = new test2();
int l = st.countTokens();
for(int counter=0;counter<l;counter++)
{
str2=obj.display(st,"",l);
System.out.println(str2);
}
}
}
但实际输出是不可比较的类型String和char如果要比较对象,请首先使用.equals,就像在这里使用st1.equals一样。。 其次,这里的错误是st1.nextToken='',您得到的错误告诉您正在比较两种不同的数据类型String(对象)和char(基元类型),您可以通过st1.nextToxen.equals来解决这个问题。 请注意,双引号用于字符串,单引号“”用于字符。
第三,类通常以大写字母开头,因此将每个test2更改为test2。这是程序的正确输出-其中有一个编译错误,比较了exttoken和char“”。它们确实是无与伦比的——一个是对象类型,另一个是原语。第一步:停止使用StringTokenizer。你知道它被弃用多久了吗?我很惊讶它居然还在语言中。您当前的问题是:st1.nextToken=''。st1.nextToken返回一个字符串,是一个字符。更正后没有语法错误,但在运行时出现错误java.util.NoSuch ElementException在递归函数的其他部分我已经重写了代码,但比允许的字符长度长,所以:希望您理解。