Fehler: Inkompatibler Typ beim Versuch, Compareto zu verwenden, um eine Zeichenfolge mit einer anderen zu vergleichen
Frage
Dies ist mein Code, um 50 Namen zu akzeptieren und Nr. und drucken Sie sie alphabetisch aus. Es gibt einen unkompatiblen Fehler für if (Name [j] .Compareto (klein))
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]);
}
}
}
Lösung
compareTo
Gibt ein zurück int
kein boolean
.
Was Sie wollen, ist:
if(name[j].equals(small)) {
BEARBEITEN Außerdem sollten Sie nach NULL suchen:
if (name[j] != null && name[j].equals(small)) {
Andere Tipps
Compateto gibt eine Ganzzahl zurück, nicht einen Booleschen. Ihr Code sollte so etwas wie if sein (Name [j] .Compareto (klein)> 1) ...
Sie können immer noch verwenden compareTo
Aber der gesamte Ausdruck muss a zurückgeben boolean
. Ein if
Aussage erfordert a true
oder false
seine Entscheidung treffen (nicht eine Zahl).
if(name[j].compareTo(small) == 0)
Dies entspricht .Equals. Sie können auch> 0 verwenden, um zu sehen, ob name[j]
ist größer als small
wie definiert von compareTo
.
Es gibt einen offensichtlichen Fehler, zum Beispiel, wenn die äußere für die Schleife beginnt, das äußere I null ist, Name [0] ist Ihre Eingabe, zum Beispiel "Zzzzz", zum Beispiel 3443. Die innere Schleife beginnt also, sie beginnt von Null T0 49 und macht einen Comopare zwischen dem Namen [0-49] und dem kleinen, dass der Pre-Name [i] ... weil es nur ein Element im Namensarray gibt. Also mach vielleicht nur eine Vergleiche Beteen Null und andere eine Zeichenfolge ... der Fehler alose so offensichtlich ..... Ich denke, dies ist der Hauptfehler, Sie können es selbst überprüfen ..... BEY Sie .. ...