【问题标题】:How can i save String value into Int value while using length? [duplicate]如何在使用长度时将字符串值保存为 Int 值? [复制]
【发布时间】:2016-03-27 22:14:17
【问题描述】:

我添加两个十六进制数字并将它们作为字符串返回, 如何将字符串值存储到 int 中?它不适合我。 这是我正在处理的代码。

int A 和 B 没有把 num1 和 num2 的 String 当作 int,我该怎么办?

 public static String Addtion(String num1, String num2){
  int sum, carry=0;
  int A = num1.length()-1;
  int B = num2.length()-1;
  String astn="";
  if ( B <  A && B!= A){
      num2 = '0' + num2;
      B++;
  }

   while(B>=0){  
      sum = (con(num1.charAt(A))+con(num2.charAt(B))+carry)%16;
      carry= (con(num1.charAt(A))+con(num2.charAt(B))+carry)/16;
      astn = toHexChar(sum) + astn;
   A--;
   B--;
 }
  return astn ;
}

【问题讨论】:

  • @redFIVE - 根据我对这篇文章的阅读,其他问题并不接近重复。尽管这篇文章的标题措辞不佳,但 OP 的问题似乎与将 String 转换为 int 无关。
  • 他在“问题”中明确表示How can i store the String value into int?
  • @redFIVE - 我知道,但看看代码。 OP 正在尝试逐个字符地模拟十六进制加法。 AB 实际上是十六进制字符串的 长度(减 1),而不是解析的十六进制值。否则,整个算法将毫无意义。 OP 的问题是由于没有正确处理这些长度(根据我的回答)。 OP 显然不是以英语为母语的人,应该考虑到这一点。 (请注意,据我们所知,这些可能是 10,000 位长的十六进制字符串,不可能在 Java 中解析为原生整数类型。)
  • @TedHopp 推断这一点不是我们的工作。在更改标题和问题之前,对于所有要搜索类似问题并获得此垃圾线程的人来说,它仍然是重复的
  • @redFIVE - 如果线程是垃圾,那么,可以,否决这个问题,或者在评论中要求 OP 澄清和/或投票关闭为“不清楚你在问什么”或其他适当的理由。但是,根据几个关键字匹配将不相关的线程指向重复,这对社区是一种伤害。

标签: java string int hex


【解决方案1】:

您没有正确处理长度差异。首先,您需要将if 更改为while,因为长度差可能大于1。其次,您的代码仅检查num2 是否比num1 短,您需要执行相反的操作好吧。最后,您忽略了加法循环结束后非零进位的可能性。这可能会奏效:

public static String Addtion(String num1, String num2){
    int sum, carry=0;
    int A = num1.length()-1;
    int B = num2.length()-1;
    String astn="";
    while (A < B) {
        num1 = "0" + num1;
        A++;
    }
    while (B <  A) {
        num2 = "0" + num2;
        B++;
    }

    while(B>=0){  
        sum = (con(num1.charAt(A))+con(num2.charAt(B))+carry)%16;
        carry= (con(num1.charAt(A))+con(num2.charAt(B))+carry)/16;
        astn = toHexChar(sum) + astn;
        A--;
        B--;
    }
    if (carry > 0) {
        astn = toHexChar(carry) + astn;
    }
    return astn ;
}

【讨论】:

    【解决方案2】:

    如果您的输入是一个以 16 为基数的字符串表示形式,并且您需要将其转换为 (base-10) int,则使用:

    Integer.parseInt(hex, 16);
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-10
    • 2014-05-06
    • 1970-01-01
    • 2020-04-02
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    相关资源
    最近更新 更多