2014-09-12 2 views
-3

Привет, поэтому я пытаюсь написать код, который проверяет операторы и нуждается в небольшой помощи при объявлении переменных. Итак, в моем коде под моим оператором if я объявляю, что определенный ответ должен быть истинным или ложным в зависимости от того, каким будет введенный номер, и я продолжаю застревать в ошибке «не могу найти символ». Вот мой кодКак связать переменную String с переменной String?

import java.util.Scanner; 

public class TestOperators 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 

    //prompt the user to enter an integer 
     System.out.print("Enter an integer: "); 
     int num = input.nextInt(); 

     String t = new String("True"); 
     String f = new String("False"); 

     //calculate 
     if ((num % 5 == 0) && (num % 6 == 0)) 
     answer = t; 
     else if ((num % 5 == 0) && (num % 6 != 0) || (num % 5 != 0) && (num % 6 == 0)) 
     answer = t; 
     else if ((num % 5 == 0) || (num % 6 == 0)) 
     answer = t; 
     else 
     answer = f; 

    //print results 
     System.out.println("Is " + num + " divisible by 5 and 6? " + answer); 
     System.out.println("Is " + num + " divisible by 5 or 6?" + answer); 
     System.out.print("Is " + num + " divisible by 5 or 6, but not both?" + answer); 

    } 
} 

Программа говорит мне, что я не могу объявить переменную «ответ» в этом месте. Я пытаюсь привязать переменные «f» и «t» к переменной ответа и не знаю, как это сделать. Пожалуйста помоги!

ответ

2

Вы никогда не объявляли answer. Попробуйте добавить эту строку в начале метода:

String answer; 
+1

, и если он инициализирован «False» (как его нужно будет инициализировать), вам не понадобится последнее решение 'else' –

5

Вы не объявляя переменные вообще. Вы просто пытаетесь сделать назначить. Вы можете просто добавить

String answer; 

к коду перед тем, как приступить к его попытке назначить.

Кроме того, вы почти никогда не хотите звонить new String(String), и вы можете значительно упростить свой код. Вы бы лучше определить результат (например, только с ||), а затем преобразовывать результат в строку:

boolean result = ((num % 5 == 0) && (num % 6 == 0)) || 
       ((num % 5 == 0) && (num % 6 != 0) || (num % 5 != 0) && (num % 6 == 0)) || 
       ((num % 5 == 0) || (num % 6 == 0)); 
String answer = result ? "True" : "False"; 

Глядя на это, результат, который вы хотите на самом деле , кажется, так просто, как:

String answer = (num % 5 == 0 || num % 6 == 0) ? "True" : "False"; 

единственный способ вы можете получить «False» в качестве ответа как в исходном коде и мой последний код, если число не делится на 5 или 6.

Ваш код просто выражает, что по-настоящему сложным образом ...

+1

гениальности! но я думаю, что это немного сложно для новичков – Baby

+0

@TheQuickBrownFox: Посмотрите на конечный результат - я бы сказал, что это намного проще, чем исходный код в вопросе, не так ли? –

+1

да, правильный! часть _complicated_, которую я имею в виду, означает, что OP должен прийти с этим решением: D – Baby

Смежные вопросы