有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从电话号码中分离数字的java

我的AP Java类中有一个我无法解决的问题。这是:

Pull Phone Number Apart

Write a program that: Prompts the user for their phone number (no dashes), displays the phone number, the area code, the middle three digits, and the last four digits.

Remember, the greatest allowable value for an integer number is 2,147,483,647, so you cannot do a 262 number

这是我的代码:

import java.util.Scanner;
public class PhoneNumber
{

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

        System.out.println("Enter your phone number");
        int number = input.nextInt(); 

        int digit1 = number / 10000000000;  
        digit1 = digit1 % 1000000000;
        int digit2 = number / 10000000000;
        digit2 = digit2 % 1000000000;
        int digit3 = number / 10000000000;
        digit3 = digit3 % 1000000000;
        int digit4 = number / 1000000000;
        digit4 = digit4 % 1000000000;
        int digit5 = number / 10000000000;
        digit5 = digit5 % 1000000000;
        int digit6 = number / 1000000000;
        digit6 = digit6 % 100000000;
        int digit7 = number / 100000000;
        digit7 = digit7 % 10000000;
        int digit8 = number / 100000000;
        digit8 = digit8 % 10000000;
        int digit9 = number / 10000000;
        digit9 = digit9 % 1000000;
        int digit10 = number / 1000000;
        digit10 = digit10 % 100000;


        System.out.println("Phone number = " + number);
        System.out.println("Area code = " + digit1 + digit2 + digit3);
        System.out.println("Middle digits = " + digit4 + digit5 + digit6);
        System.out.println("Last four digits = " + digit7 + digit8 + digit9);       

    }

}

下面是我得到的错误: int类型的文字1000000000超出范围

有人能帮我修一下吗?提前感谢!:)


共 (4) 个答案

  1. # 1 楼答案

    您可以尝试使用long long类型,因为它是64位整数。 如果有必要在java中使用BigInteger或其他用户所说的使用strings来实现这一点

  2. # 2 楼答案

    你可以像这样使用long

    import java.util.Scanner; public class PhoneNumber {
    
    public static void main(String[] args)
    {
        Scanner input = new Scanner( System.in );
    
        System.out.println("Enter your phone number");
        int number = input.nextInt(); 
    
        long digit1 = number / 10000000000L;  
        digit1 = digit1 % 1000000000;
        long digit2 = number / 10000000000L;
        digit2 = digit2 % 1000000000;
        long digit3 = number / 10000000000L;
        digit3 = digit3 % 1000000000;
        int digit4 = number / 1000000000;
        digit4 = digit4 % 1000000000;
        long digit5 = number / 10000000000L;
        digit5 = digit5 % 1000000000;
        int digit6 = number / 1000000000;
        digit6 = digit6 % 100000000;
        int digit7 = number / 100000000;
        digit7 = digit7 % 10000000;
        int digit8 = number / 100000000;
        digit8 = digit8 % 10000000;
        int digit9 = number / 10000000;
        digit9 = digit9 % 1000000;
        int digit10 = number / 1000000;
        digit10 = digit10 % 100000;
    
    
        System.out.println("Phone number = " + number);
        System.out.println("Area code = " + digit1 + digit2 + digit3);
        System.out.println("Middle digits = " + digit4 + digit5 + digit6);
        System.out.println("Last four digits = " + digit7 + digit8 + digit9);       
    
    }
    }
    
  3. # 3 楼答案

    使用

    Integer.toString()
    并从那里开始操作。:)

    此外,在现实生活中,请不要将电话号码存储在整数字段中。字符串更合适,因为电话号码可能会增长很长,有时合法地可以包含非数字字符

  4. # 4 楼答案

    只需将您的电话号码转换为字符串类型。使用子字符串方法获取您的区号和其他部件。将它们转换回整数。您不必为此创建这么多int变量