Fehler: Inkompatibler Typ beim Versuch, Compareto zu verwenden, um eine Zeichenfolge mit einer anderen zu vergleichen

StackOverflow https://stackoverflow.com/questions/8804850

  •  26-10-2019
  •  | 
  •  

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]);
      }
    }
 }
War es hilfreich?

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 .. ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top