簡體   English   中英

我在 if 循環之前聲明了我的變量,但我無法在循環之外訪問它?

[英]I declared my variable before the if-loop but I can't access it outside of the loop?

所以我需要在循環之外使用我的變量,但它從 if 循環之一內部獲取它的值,但我不斷收到此錯誤:

變量newLastName已經在方法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);
    }
}

你再宣布它是否塊 不要這樣做。

改變

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";
}

編輯:根據paisanco的評論:

另外有一個錯字,塊外的newFirstName,塊內的newfirstname

編輯 2:根據elliott-frisch的評論:

請不要使用new String(...)

這通過阻止 Java 在 String 池時使用 String 池來不必要地創建新對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM