告诉我`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版本

你能告诉我如何使用InvokeScriptTransaction

告诉我如何填充二维数组

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

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

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

告诉我如何安装React JS文档

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

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

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

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

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

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

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

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

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

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

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

谁能告诉我为什么我的触发器不按我预期的方式工作?

为什么的IntelliJ告诉我,我从来类返回null?

谁能告诉我为什么我的IFile总是返回null?

我如何告诉我的序列化程序字段为空白是可以的?

我的表程序有问题。可以告诉我如何解决吗?

我如何告诉我的UIView UIViewController中的按钮已被按下?(迅速)

我如何告诉我的Dockerfile在docker-compose的RUN命令中使用哪个DNS?

我如何告诉我的视图何时应该取消订阅事件?

如何理解这种类型类错误,告诉我我使用了错误的类型?

这个错误试图告诉我什么,我该如何解决?