V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
QueueY7Y
V2EX  ›  问与答

-999999999999 有什么好的方法转换为 long 型吗?

  •  
  •   QueueY7Y · 2018-09-20 09:05:10 +08:00 · 2032 次点击
    这是一个创建于 2256 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,我是新手,请问-999999999999 有什么好的方法转换为 long 型吗?

    17 条回复    2018-09-20 12:05:58 +08:00
    QueueY7Y
        1
    QueueY7Y  
    OP
       2018-09-20 09:05:37 +08:00
    -999999999999 是字符串
    zwh2698
        2
    zwh2698  
       2018-09-20 09:19:19 +08:00 via Android   ❤️ 1
    C Python Java ,,,,,?是自己要实现这个还是要应用?
    jacobz
        3
    jacobz  
       2018-09-20 09:21:44 +08:00 via iPhone
    @zwh2698 python 不是 duck typing 吗
    QueueY7Y
        4
    QueueY7Y  
    OP
       2018-09-20 09:22:51 +08:00
    @zwh2698 是 JAVA
    QueueY7Y
        5
    QueueY7Y  
    OP
       2018-09-20 09:23:04 +08:00
    @jacobz 用 JAVA 抱歉
    QueueY7Y
        6
    QueueY7Y  
    OP
       2018-09-20 09:23:34 +08:00
    @zwh2698 实现就好啦
    xiaonec
        7
    xiaonec  
       2018-09-20 09:31:33 +08:00
    不就是 Long.parseLong(),加个 try-catch 就好么。
    momocraft
        8
    momocraft  
       2018-09-20 09:39:40 +08:00
    如果这是代码的一部分:Long 字面量是 `-999999999999L`
    whoami9894
        9
    whoami9894  
       2018-09-20 09:41:47 +08:00 via Android
    @jacobz
    鸭子类型和楼主说的有什么关系吗
    jacobz
        10
    jacobz  
       2018-09-20 09:45:05 +08:00 via iPhone
    @whoami9894 楼主特别提到了 long,如果不考虑 python 最新的 static typing,应该不可能是 python。
    MozzieW
        11
    MozzieW  
       2018-09-20 10:09:51 +08:00
    我还以为是 LeetCode, 看了发现是入门:
    ```
    String value = "-999999999999";
    System.out.println(value);
    Long result = Long.parseLong(value);
    System.out.println(result);
    ```
    结果:
    ```
    -999999999999
    -999999999999
    ```
    qiaoguoqiang
        12
    qiaoguoqiang  
       2018-09-20 10:11:04 +08:00
    可以的,这问题很强势
    QueueY7Y
        13
    QueueY7Y  
    OP
       2018-09-20 10:11:55 +08:00
    @xiaonec 是噢,我还用的 Integer.parseLong...谢谢啦
    QueueY7Y
        14
    QueueY7Y  
    OP
       2018-09-20 10:13:18 +08:00
    @MozzieW 非常感谢
    moxiaonai
        15
    moxiaonai  
       2018-09-20 10:38:57 +08:00
    长数字用字符串
    zwh2698
        16
    zwh2698  
       2018-09-20 12:04:32 +08:00
    public class Helloc {


    public static long parseLong(String number) {
    long n = 0;
    if (number == null || number.isEmpty()) {
    System.out.println("Number is null or empty");
    return n;
    }
    boolean isNegative = false;
    if (number.charAt(0) == '-') {
    isNegative = true;
    } else {
    n = getValue(number.charAt(0));
    }
    for (int i = 1; i < number.length(); i++) {
    n = n * 10 + getValue(number.charAt(i));
    }
    return isNegative ? (-1 * n) : n;
    }

    public static int getValue(char ch) {
    int value = ch;
    if (value < '0' || value > '9') {
    throw new NumberFormatException();
    }
    return value - '0';
    }

    public static void main(String[] args) {

    long v = parseLong("-999999999999");
    System.out.println(v);
    }
    }


    给你啦,自己整理整理
    zwh2698
        17
    zwh2698  
       2018-09-20 12:05:58 +08:00
    当然,如果你是应用,请使用 Long.parseLong() 来完成。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1063 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:13 · PVG 03:13 · LAX 11:13 · JFK 14:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.