【问题标题】:Is there such thing as math.substring in java?java中是否有math.substring之类的东西?
【发布时间】:2023-03-08 15:50:02
【问题描述】:

好的,我只是有点好奇。但我想知道是否有数字的子字符串(math.substring?),然后它会在指定的位置获取字符。

示例(真的很糟糕)

int number = 5839;
int example = number.substring(0,1)
println = example;

然后显示5?

【问题讨论】:

  • 为什么不直接使用舍入函数呢?在该示例中,floor 后跟除以 1000 将得到 5
  • @ChrisW 它不会用于舍入:p 我应该指定它,它将用于比较数字。我应该指定的。
  • 数字没有子串操作的原因是数字本身独立于它们的表示方式。如果您想要 base-10 表示的子字符串,请按照其他人的建议进行这样的表示。这样的子字符串操作如何知道您想要 base-10(ASCII 码,不少于)而不是 base-2(二进制)或 base-16(十六进制)或 base-64 或其他任何数量?

标签: java math int substring


【解决方案1】:

为什么不直接转换成字符串,然后调用substring(0,1)?...

int number = 5839;
int example = Integer.parseInt((number+"").substring(0,1));

调用number+"" 会导致JVM 将其转换为String,然后在其上调用substring()。然后,您最终将其解析回int

【讨论】:

  • 这里缺少括号:((number+"").substring(0,1));
  • 需要括号吗?我知道 JVM 在尝试调用substring() 之前首先评估+"",将其转换为字符串。当然,括号没有伤害:-)
  • 在我意识到自己不是的那一天之前,我的印象是一样的。尝试运行它。它会给你一个错误。
  • String.valueOf() 不是更快吗?
  • 感谢@FarhanSyed,我已经更新了我的答案以反映这一点。
【解决方案2】:
int number = 5839;
String numString = Integer.toString(number);
String example = numString.substring(0,1)
int subNum = Integer.parseInt(example);
System.out.println(subNum);

首先将其更改为String。 这是我写的一个小函数:

public static int intSubstring(int number, int beginIndex, int endIndex) {
    String numString = Integer.toString(number);
    String example = numString.substring(beginIndex,endIndex)
    int subNum = Integer.parseInt(example);
    return subNum;
}

或压缩:

public static int intSubstring(int number, int beginIndex, int endIndex) {
    return Integer.parseInt((number+"").substring(beginIndex,endIndex));
}

【讨论】:

  • 只是检查是否有特定于数字的方法,但我想没有。谢谢:)
  • @Kalvin 你可以像我一样编写一个函数并调用它,这将是int 特有的:)
  • 每次在空字符串上调用子字符串时,都会使索引数组越界。添加括号以避免这种情况。
  • @FarhanSyed 哦等等。我没在想。 :P 谢谢
  • 嗯.. 天色已晚:P.
【解决方案3】:

不,没有。但是您可以将整数转换为字符串并获取子字符串并再次解析回整数

【讨论】:

    【解决方案4】:

    不,没有这样的事情,但是您可以执行以下操作:

    String s = ""+number; //You can now use the Substring method on s;
    

    或者如果您只想删除最后 y 个数字:

    number = (int)(number/y);
    

    如果您只想保留最后的 z 位:

    number = number%(Math.pow(10,z)); // % means modulo
    

    【讨论】:

      【解决方案5】:

      不,没有。 int 是一种原始数据类型。但是,您可以通过一个语句来满足您的需求。

      Integer.parseInt(String.valueOf(12345).substring(1, 2))
      

      【讨论】:

      • 然后您必须将String 解析回int
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多