告诉我`String n = null;`是如何工作的?

CPT柯克

这是我的代码,它完全按照我想要的方式工作,但是我使用了

String n = null;

在处理switch语句时,有人可以向我解释为什么它按此代码的方式工作,以便我可以更好地理解此概念吗?

//Tells a user what number corresponds with what numbers on a telephone

import java.util.Scanner;

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

   //Variables
   String x;
   char c;

   //Input
   System.out.println("Enter a letter: ");
   x = input.next();

   //Convert to lowercase
   x = x.toLowerCase();
   c = x.charAt(0);

   //Assign reference variable 
   String n = null;

   //Switch conditions
   switch (c)
      {   
      case 'a':
      case 'b':
      case 'c': n = "2";
         break;
      case 'd':
      case 'e':
      case 'f': n = "3";
         break;
      case 'g':
      case 'h':
      case 'i': n = "4";
         break;
      case 'j':
      case 'k':
      case 'l': n = "5";
         break;
      case 'm':
      case 'n':
      case 'o': n = "6";
         break;
      case 'p':
      case 'q':
      case 'r':
      case 's': n = "7";
         break;
      case 't':
      case 'u':
      case 'v': n = "8";
         break;
      case 'w':
      case 'x':
      case 'y':
      case 'z': n = "9";
         break;                                 
      }       
   //Output
   System.out.println("The corresponding number is " + n);    
   }
}
网络钓鱼

如果我正确理解了这个问题,那么您会问“为什么将字符串n设置为null?”。或“为什么我的switch语句正常工作?” 所以我都会回答。

首先,首先将字符串设置为null以确保它为空,并且不包含任何数据(或存储位置为“ 0”)。基本上,您是在告诉编译器n实际上根本什么都没有,除了它的名字外,它根本不存在。

现在,转到switch语句。您已经通过switch声明实现了标准下降。因此,如果代码段中的变量c是字母“ a”,“ b”或“ c”之一,则它将设置字符串n(直到这一点仍然为零,如果您尝试使用它,它将抛出错误)并将其设置为字符串“ 2”(我假设您知道字符串和整数之间的区别)。

您可能在想,为什么n在switch语句之后仍然存在(或者为什么它仍然不为null)?这是因为变量的范围。由于它是在main内部声明的,因此main内部的任何内容都可以看到,并更改n的值。现在,如果您执行以下操作

.
.
.
string n = null;
switch(c)
{
    case "a":
    case "b":
    case "c":
        string n="2";
        break
    .
    .
    .
}
System.out.println("The corresponding number is " + n);

由于您在switch语句的范围中重新声明了n,因此会出现错误。在此示例中,switch语句中的n与所打印的n的作用域不同。如您的示例中的“ case“ c”:n = 2;“ n DO与被打印到屏幕上的n具有相同的作用域(实际上是相同的变量)。

另外,您也可以使用此方法进行检查,以查看在打印n之前实际上已将n设置为某种值(并防止出现麻烦的ArgumentNull异常)。

if(n!=null)
    System.out.println("The corresponding number is " + n);
else
    System.out.println("The character you entered does not have a corresponding number");

我希望这可以帮助您清除一切!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我如何让这个 RPG 工作,它告诉我 Y 和 N 没有定义

谁能告诉我如何在Rails中执行此n个case / switch语句

WordPress如何告诉我的CSS版本

谁能告诉我如何实现?

Pascal,请告诉我这个循环是如何工作的

你能告诉我这个 Solidity 是如何工作的吗?

谁能告诉我为什么该功能可以工作?

谁能告诉我Shopify Api的工作原理?

你能告诉我如何使用InvokeScriptTransaction

告诉我如何填充二维数组

ffmpeg依赖错误告诉我什么,如何解决?

如何告诉我的IDE以特定方式编译CMake项目?

如何告诉我的测试等待goroutine中的回调?

告诉我如何安装React JS文档

如何告诉我的应用忽略特定的触摸?

谁能告诉我这种效果是如何实现的?

请告诉我这个 UI 名称是如何命名的

告诉我如何以角度显示 json 对象值?

请告诉我如何编写nuxt插件'printd'

如何让pyautogui告诉我locateOnScreen函数的坐标

如何告诉我的PHP脚本运行Javascript函数?

请告诉我如何制作跟随角色的UI

PHP 请告诉我如何访问对象键

我如何告诉我与Xamarin一起工作的老板不会使其更快

有人能告诉我我的 RXJS 代码是如何工作的吗?

有人可以告诉我DateTimeZone :: getOffset PHP函数如何工作吗?

你能告诉我比较是如何工作的,输入operator ==(参数)

谁能告诉我为什么对对象Staff使用Null以及如何解决它

一旦告诉我的共享主机,如何告诉Deployer使用不同的PHP版本?