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%
String
moet worden gewijzigd in String
.
Door int score
te schrijven, probeer je een nieuwe variabele te declareren die al bestaat, die je al eerder hebt gedeclareerd. Verwijder gewoon het int
gedeelte 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 = 1
in 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 score
hierboven. 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 score
en wijs vervolgens 1
toe.
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 x
we 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));
}