Linkerkant van een toewijzing moet een variabele CharAt zijn

Ik heb momenteel de volgende code voor Java.

public class lesson8
{
    static Console c;           // The output console
    public static void main (String[] args)
    {
        c = new Console ();
        String user;
        int length, counter, spacecounter;
        spacecounter=0;
        c.print("Enter a string. ");
        user = c.readLine();
        length = (user.length()-1);
        for (counter=0;counter<length;counter++) 
        {
            if (user.charAt(counter) = "") 
            {
                spacecounter++;
            }
        }
        c.println("There are "+spacecounter+" spaces in your string.");
        c.println("There are "+counter+" characters in your string.");
        // Place your program here.  'c' is the output console
        // main method
    }
}

Ik krijg een foutmelding over dit deel:

       if (user.charAt(counter) = "") 

De fout is

De linkerkant van een opdracht moet een variabele zijn.

Ik heb het gewijzigd in “==”, maar nu krijg ik een andere foutmelding:

Het type van de linker sub-expressie “char” is niet compatibel met het type van de rechter sub-expressie “java.lang.String”.

Hoe zou ik dit oplossen?

Bedankt!


Antwoord 1, autoriteit 100%

Dus de reden waarom

if (user.charAt(counter) = "") 

geeft die fout is dat “=” een toewijzingsoperator is in java, en dus moet de linkerkant een variabele zijn. Dat gezegd hebbende, wil je waarschijnlijk eigenlijk

if (user.charAt(counter) == ' ')

die de vergelijkingsoperator (==) en het spatieteken (‘ ‘) gebruikt. (“” is een lege string)


Antwoord 2, autoriteit 29%

U gebruikt een toewijzing in plaats van een vergelijkingsoperator.

Wijzigen

if (user.charAt(counter) = "") 

naar

if (user.charAt(counter) == "")  

Bijwerken:
Je hebt ook weer een fout bij het vergelijken.
Je moet ook single quotes ( ' )gebruiken om een charte vergelijken, anders wordt het niet gecompileerd.

if (user.charAt(counter) == '')  

Maar ook dit wordt niet gecompileerd omdat een teken met een lengte van nulniet is gedefinieerd.
Je zou een geldig teken moeten vergelijken, zeg ‘ ‘ voor spatie.


Antwoord 3, autoriteit 14%

U wilt de gelijkheidsoperator ==gebruiken, niet de toewijzingsoperator =.


Antwoord 4, autoriteit 14%

“==” gaat ervoor zorgen dat de waarde aan de rechterkant hetzelfde is als de variabele aan de linkerkant.

“=” is een toewijzingsoperator en wordt gebruikt om waarde aan de variabele te geven, in plaats van deze te vergelijken.


Antwoord 5

Ik kreeg dezelfde fout in mijn code. Door het toevoegen van haakjes is deze fout opgelost

Gewijzigd van

if(isNotNullorEmpty(operator)) 
                ArrayList<String> result =  getOperatorAndTypeforName(name );

naar

if(isNotNullorEmpty(operator)){ 
                ArrayList<String> result = getOperatorAndTypeforName(name );
}

Other episodes