У меня проблема с доступом к переменным, инициализированным в операторе switch, а затем с использованием их вне switch.
Вот что должен выдать мой код:
Что такое: X (+ - * или /) X
Вот мой код Java:
import java.util.Random;
import java.util.Scanner;
public class Test2 {
public static void main(String[]args){
Random rand = new Random();
Scanner sc = new Scanner(System.in);
int svar, ans;
int tal1 = rand.nextInt(100) + 1;
int tal2 = rand.nextInt(100) + 1;
String characters = "+-*/";
int r = rand.nextInt(characters.length());
char randomChar = characters.charAt(r);
switch(randomChar){
case '+':
ans = tal1 + tal2;
break;
case '-':
ans = tal1 - tal2;
break;
case '*':
ans = tal1 * tal2;
break;
case '/':
ans = tal1 / tal2;
break;
}
System.out.println("What is: "+tal1+randomChar+tal2+"?");
svar = sc.nextInt();
if (svar == ans)
System.out.println("Correct!");
else
System.out.println("Wrong - Right answer: "+ans);
}
}
Как видите, "ans" был объявлен и инициализирован. Тем не менее, я хочу использовать переменную ans в операторе if (для сравнения результата) и в выводе.
Теперь я мог бы расширить каждый случай и написать как операторы if, так и выходные данные, но код был бы слишком излишним, поскольку я пытаюсь сделать подобный код, но меньшего размера. Любые советы, как эта работа будет работать?
Вот ошибка компиляции, которую я получаю:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The local variable ans may not have been initialized
The local variable ans may not have been initialized
at Test2.main(Test2.java:36)