FOUT: ‘anders’ zonder ‘als’

Een ander behalen zonder indien verklaring:

import java.util.Scanner;
public class LazyDaysCamp
{
    public static void main (String[] args)
    {
        int temp;
        Scanner scan = new Scanner(System.in);
        System.out.println ("What's the current temperature?");
        temp = scan.nextInt();
        if (temp > 95 || temp < 20);
            System.out.println ("Visit our shops");
            else if (temp <= 95)
                if (temp >= 80)
                System.out.println ("Swimming");
                else if (temp >=60) 
                    if (temp <= 80)
                    System.out.println ("Tennis");
                    else if (temp >= 40)
                        if (temp < 60)
                        System.out.println ("Golf");
                        else if (temp < 40)
                            if (temp >= 20)
                            System.out.println ("Skiing");                                                                                                                                                                                                                                                                   
    }
}

Ik moet een cascading gebruiken als daarom er zo uitziet. Kunnen je het me alsjeblieft weten als ik de cascading heb gedaan als het correct is? Ik heb niet in staat geweest om een ​​goed voorbeeld van cascading te vinden, zo ja, ik heb mijn best gedaan om te weten wat cascading betekent.

LazyDaysCamp.java:14: error: 'else' without 'if'
            else if (temp <= 95)
            ^
1 error

Dat is de fout die ik krijg


Antwoord 1, Autoriteit 100%

Verwijder de puntkomma aan het einde van deze regel:

if (temp > 95 || temp < 20);

En gebruik alsjeblieft accolades! Java is nietzoals Python, waar het inspringen van de code een nieuw blokbereik creëert. Het is beter om op veilig te spelen en altijd accolades te gebruiken – tenminste totdat je wat meer ervaring hebt met de taal en precies begrijpt wanneerje ze kunt weglaten.


Antwoord 2, autoriteit 11%

Het probleem is dat de eerste if if (temp > 95 || temp < 20);hetzelfde is met normale inspringing als

if (temp > 95 || temp < 20)
{
}

Als de temp niet tussen 20 en 95 ligt, voer dan een leeg blok uit. Hier is niets anders voor.

De volgende regel anders heeft dan geen indien die ermee overeenkomt en produceert dus uw fout

De beste manier om hiermee om te gaan, is door altijd accolades te gebruiken om te laten zien wat er wordt uitgevoerd na de if. Dit betekent niet dat de compiler de fouten opvangt, maar eerst heb je meer kans om problemen te zien door de inspringing te zien en ook kunnen de fouten leesbaarder lijken. Je kunt echter tools gebruiken zoals eclipse, checkstyle of FindBugs die je vertellen of je {} niet hebt gebruikt of een leeg blok hebt gebruikt.

Een betere manier is misschien om de logica op een rijtje te zetten terwijl je dingen opnieuw test

if (temp > 95 || temp  < 20)  
{
  System.out.println ("Visit our shops");
} else if (temp >= 80)
{
    System.out.println ("Swimming");
} else if (temp >=60)
{ 
   System.out.println ("Tennis");
} else if (temp >= 40)
{
     System.out.println ("Golf");
} else if (temp >= 20)
{
   System.out.println ("Skiing");                                                                                                                                                                                                                                                                   
}

Antwoord 3, autoriteit 5%

Ik ga dit voor je opnieuw formatteren. Als je accolades gebruikt, zul je dit probleem nooit hebben.

public class LazyDaysCamp
{
    public static void main (String[] args)
    {
        int temp;
        Scanner scan = new Scanner(System.in);
        System.out.println ("What's the current temperature?");
        temp = scan.nextInt();
        if (temp > 95 || temp < 20) //<-- I removed the semicolon that caused the error
        {
            System.out.println ("Visit our shops");
        }
        else if (temp <= 95)
        {
            if (temp >= 80)
            {
                System.out.println ("Swimming");
            }
            else if (temp >=60)
            {
                if (temp <= 80)
                {
                    System.out.println ("Tennis");
                }
                else if (temp >= 40)
                {
                    if (temp < 60)
                    {
                        System.out.println ("Golf");
                    }
                    else if (temp < 40)
                    {
                        if (temp >= 20)
                        {
                            System.out.println ("Skiing");
                        }
                    }
                }
            }
        }
    }
}

Antwoord 4

Deze fout treedt op omdat u een puntkomma hebt ingevoerd na de if-instructie.
Verwijder de puntkomma aan het einde van de eerste if-instructie op regel 12.

   if (temp > 95 || temp < 20);

Other episodes