如何获得前三位数并比较输出?

时间:2014-10-07 04:06:34

标签: java switch-statement

代码正在运行,问题是我无法获得准确的输出。我想得到这个人的电话号码并取前三位数,并将其与确切的电话公司进行比较。到目前为止我得到了这个:

import java.util.Scanner;
public class lab03_ex03 {
  public static void main(String args[]) {
    int number;
    int n=3;
    Scanner input=new Scanner(System.in);
    System.out.print("Please enter your phone number: ");
    number=input.nextInt();
    int b=Integer.parseInt((""+number).substring(0,n));
    if(b==013) {
      String me="TM";
    }
    switch(me) {
      case "TM":
        System.out.println("Answer: The phone number is a TM number.");
        break;
      case "Celcom":
        System.out.println("Answer: The phone number is a Celcom number.");
        break;
      case "DiGi":
        System.out.println("Answer: The phone number is a DiGi number.");
        break;
      case "Maxis":
        System.out.println("Answer: The phone number is a Maxis number.");
        break;
      // default:
        // System.out.println("Its look like unvalid number :( . Please check again");
    }
  }
}

在这个例子中,如果此人输入013456789,那么它只需要013并且会说它是DIGI号码。但是当我尝试这样做时,它什么都没有显示出来。我做错了什么?

3 个答案:

答案 0 :(得分:1)

您的代码甚至无法编译。

  if(b==013)
    {
        String me="TM"; //scope of String variable me is inside if only
    }
    switch(me) // you can't use it here

如果您使用nextInt(),则输入013456789将成为13456789

另外,您应该记住,如果您使用0来代表它们,则会忽略前导int

您应该按照以下方式更正您的代码,以纠正上述错误。

 String number;
 int n = 3;
 Scanner input = new Scanner(System.in);
 System.out.print("Please enter your phone number: ");
 number = input.nextLine();
 String b = number.substring(0, n);
 String me=null;
 if (b.equals("013")) {
    me = "TM";
 }
 switch (me) {
   case "TM":
     System.out.println("Answer: The phone number is a TM number.");
     break;
   case "Celcom":
     System.out.println("Answer: The phone number is a Celcom number.");
     break;
   case "DiGi":
     System.out.println("Answer: The phone number is a DiGi number.");
     break;
   case "Maxis":
     System.out.println("Answer: The phone number is a Maxis number.");
     break;         
}

答案 1 :(得分:0)

你的代码有一些严重的缺陷,我不确定你要做什么。如果你想得到前三位数字,试试这样的话。

String sNumber = in.nextLine();
sNumber = sNumber.substring(0,3);
int first3Digits = Integer.parseInt(sNumber);

然后,如果你想在交换机中使用这个号码来找到合适的"电话号码"做这样的事情。

switch(first3Digits){
case 013:
   System.out.println("DiGi");
   break;
//add more cases here
}

答案 2 :(得分:0)

在您的代码中,013将被视为八进制而非十进制,因为十进制值不以零开头。

因此,013将被视为十进制值11,您将与b进行比较(值= 13)因此,如果未调用条件。

if(b==013) // value of b = 13 but value of 013 is 11