2015-09-13 1 views
-4

Так мне нужно использовать мою переменную вне цикла, но он получает свое значение внутри одного из если петель, но я получаю эту ошибку:Я объявил свою переменную до цикла if, но я не могу получить к ней доступ за пределами цикла?

variable newLastName is already defined in method main(java.lang.String[])

Но я никогда не получаю эту ошибку для переменной newFirstName ,

import java.util.Scanner; 

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

     System.out.println("Please enter your first name."); 
     String firstName = scan.nextLine(); 
     char firstChar = firstName.charAt(0); 
     System.out.println("Please enter your last name."); 
     String lastName = scan.nextLine(); 
     char lastChar = lastName.charAt(0); 

     String newFirstName = null; 

     if (firstChar =='A') 
     { 
     String newfirstname = new String("Applebees"); 
     } 
     if (firstChar =='B') 
     { 
     String newfirstname = new String("Btchstick"); 
     } 
     if (firstChar =='C') 
     { 
     String newfirstname = new String("Cathy"); 
     } 
     if (firstChar =='D') 
     { 
     String newfirstname = new String("Donger"); 
     } 
     if (firstChar =='E') 
     { 
     String newfirstname = new String("Egg"); 
     } 

     String newLastName = null; 

     if (lastChar =='A') 
     { 
      String newLastName = new String("Ant Hill Supreme"); 
     } 
     if (lastChar =='B') 
     { 
      String newLastName = new String("Blue Jay Junior"); 
     } 
     if (lastChar =='C') 
     { 
      String newLastName = new String("...Catwoman?"); 
     } 
     if (lastChar =='D') 
     { 
      String newLastName = new String("Dipstick"); 
     } 
     if (lastChar =='E') 
     { 
      String newLastName = new String("Egg-Egg"); 
     } 

     System.out.println("Your new name is: " + newFirstName + " " + newLastName); 
    } 
} 
+4

Нет такой вещи, как 'if loop'. Цикл представляет собой блок кода, который потенциально может выполняться несколько раз. После того, как он достигнет последнего утверждения, он возвращается к первому утверждению (возможно). Вот почему он называется циклом. – ajb

ответ

1

Вы повторно объявить его внутри КРП блока. Не делай этого.

Изменить

String newFirstName = null; 

if (firstChar =='A') 
{ 
    // the variable below is declared inside the if block and is 
    // thus local to and visible only in the if block 
    String newfirstname = new String("Applebees"); 
} 

в

String newFirstName = null; 

if (firstChar =='A') 
{ 
    newFirstName = "Applebees"; 
} 

Edit: согласно paisanco 's комментарий:

Plus there is a typo, newFirstName outside the block, newfirstname inside the block

Edit 2: в соответствии с elliott-frisch' ы комментарий:

Please don't use new String(...) .

Это создает ненужные объекты, не позволяя Java использовать пул строк при пуле String.

+1

Плюс есть опечатка, newFirstName вне блока, newfirstname внутри блока. – paisanco

+0

О, мой бог, я сейчас чувствую себя немым, но я думаю, что я получил его на работу !!! спасибо ребятам :) – staticch

+1

Пожалуйста, не используйте 'new String'. –

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