JAVA Variabele declaratie hier niet toegestaan

Ik krijg de foutmelding “Variabele declaratie hier niet toegestaan” en ik weet niet waarom, ik ben nieuw in Java en kan het antwoord niet vinden :/
Zoals het zegt, kan ik “int” niet maken in “if”, maar is er een manier om het te maken?

import java.io.PrintWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;import java.util.Scanner;
 public class test{
  public static void main(String[] args) throws FileNotFoundException{
    File plik = new File("test.txt");
    PrintWriter saver = new PrintWriter("test.txt");
     int score = 0;
     System.out.println("Q: What's bigger");
     System.out.println("A: Dog B: Ant");
     Scanner odp = new Scanner(System.in);
     string odpo = odp.nextLine();
     if(odpo.equals("a"))
        int score = 1;
     else
         System.out.println("Wrong answer");
  }
}

Antwoord 1, autoriteit 100%

Stringmoet worden gewijzigd in String.

Door int scorete schrijven, probeer je een nieuwe variabele te declareren die al bestaat, die je al eerder hebt gedeclareerd. Verwijder gewoon het intgedeelte en je krijgt de opdracht die je wilt.


Antwoord 2, autoriteit 90%

Volgens de Java-specificatie kunt u geen lokale variabele declareren als er geen bereik is. Bij het declareren van int score = 1in if, is er geen bereik. http://docs.oracle.com/javase/specs /jls/se7/html/jls-6.html

Een lokale variabele, een van de volgende
*Een lokale variabele gedeclareerd in een blok
*Een lokale variabele gedeclareerd in een for-statement

U hebt ook al een variabele genoemd, genaamd scorehierboven. Zelfs als u die verklaring verwijdert, krijgt u de fout vanwege de bovenstaande reden.


Antwoord 3, Autoriteit 150%

Wijzig int score = 1;naar score = 1;.

Uitleg:

Om variabele te declareren, gebruiken we

someType variable;

Om waarde toe te wijzen aan variabele Wij gebruiken

variable = value;

We kunnen deze instructie mengen in één regel zoals;

someType variable = value;

Dus wanneer u

doet

int score = 1;

U verklaart eerst variabele scoreen wijs vervolgens 1toe.

Probleem hier is dat we geen twee (of meer) lokale variabelen met dezelfde naam in dezelfde scope kunnen hebben. Dus zoiets als

int x = 1;
int x = 2;
System.out.println(x)

is onjuist omdat we niet kunnen beslissen welke xwe hier moeten gebruiken.

hetzelfde over

int x = 1;
{
    int x = 2;
    System.out.println(x)
}

Dus als u eenvoudig de waarde van reeds gemaakte variabele gebruik alleen toewijzing wilt wijzigen, omvat geen aangifteonderdeel (Verwijdertype Informatie verwijderen)

int x = 1;
//..
x = 2;//change value of x to 2

Nu is het tijd voor verwarrende deel-scope. U moet begrijpen dat er een aantal variabelen zijn waarin ze kunnen worden gebruikt. Dit gebied wordt scope genoemd en is gemarkeerd met {}haakjes die de declaratie van variabele omringen. Dus als je een variabele maakt zoals

{
    int x = 1;
    System.out.println(x); //we can use x here since we are in its scope 
}
System.out.println(x); //we are outside of x scope, so we can't use it here
int x = 2;
System.out.println(x); //but now we have new x variable, so it is OK to use it

Dus vanwege dat bereikbeperkingsverklaringen op plaatsen zoals

if (condition)
    int variable = 2;
else
    int variable = 3;

zijn onjuist omdat een dergelijke code gelijk is aan

if (condition){
    int variable = 2;
}else{
    int variable = 3;
}

dus deze variabele kan nergens toegankelijk zijn.


Antwoord 4

Als u haakjes vergeet, kan “JAVA-variabeledeclaratie hier niet toegestaan” ook voorkomen. Dit komt omdat een variabele gedeclareerd moet worden met een duidelijk bereik.

In mijn geval Ik vergat een haakje rond mijn OUTER– for-lus in de methodedie me dezelfde fout gaf.

public static void InsertionSort(int[] list){
        for (int i = 1 ; i < list.length ; i++)
            double currentValue = list[i];
            int k;
            for (k = i - 1 ; k >= 0 && list[k] > currentValue ; k--){
                list[k+1] = list[k];
            }
            // Insert the current element
            list[k+1] = currentValue;
        System.out.println("The sorted array is : "+Arrays.toString(list));
    }

Other episodes