这是我的代码,可以接受50个名字并且滚动号码。并按字母顺序打印。它为if(name [j] .compareTo(small))
提供了错误不兼容的类型import java .io.*;
class student
{
public void main()throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String name[]=new String[50];
int mark[]=new int[50];
int i;
for( i=0;i<=49;i++)
{
System.out.println("plz ntr d name of d studnt");
name[i]=br.readLine();
System.out.println("plz ntr d marks of d studnt");
mark[i]=Integer.parseInt(br.readLine());
int j,pos=0;
String temp, small;
for(i=0;i<49;i++)
{
small=name[i];
pos=i;
for(j=i+1;j<49;j++)
{
if(name[j].compareTo(small))
pos=j;
}
}
temp=name[i];
name[i]=name[pos];
name[pos]=temp;
}
for(i=0;i<=49;i++)
{
System.out.println((i+1)+" "+name[i]+" "+mark[i]);
}
}
}
答案 0 :(得分:6)
compareTo
会返回int
而不是boolean
。
你想要的是:
if(name[j].equals(small)) {
编辑此外,您应该检查null:
if (name[j] != null && name[j].equals(small)) {
答案 1 :(得分:0)
CompateTo返回一个整数,而不是布尔值。你的代码应该是这样的 if(name [j] .compareTo(small)&gt; 1) ...
答案 2 :(得分:0)
您仍然可以使用compareTo
,但整个表达式需要返回boolean
。 if
语句需要true
或false
来做出决定(而不是数字)。
if(name[j].compareTo(small) == 0)
这相当于.equals。你也可以使用&gt;例如0,看看name[j]
是否大于small
定义的compareTo
。
答案 3 :(得分:0)
有一个明显的错误,例如,当外部for循环开始时,外部i为零,name [0]是您的输入,例如'zzzzz',标记[0]是3443,例如。所以内部循环开始,它从零t0 49开始,并在名称[0-49]和小名称之间建立一个comopare,即名称[i] ......因为名称数组中只有一个元素。所以也许只是做一个比较beteen null和其他一些字符串...错误alose这么明显.....我认为这是主要的错误,你可以自己检查..... bery you .. ...