代码正在运行,问题是我无法获得准确的输出。我想得到这个人的电话号码并取前三位数,并将其与确切的电话公司进行比较。到目前为止我得到了这个:
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号码。但是当我尝试这样做时,它什么都没有显示出来。我做错了什么?
答案 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