- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我做了一个对象,MyString。我不知道如何重新创建 valueOf(double d)。我为整数重新创建了 valueOf。为了方便起见,我将小数位数限制为 8 位。如何重新创建 valueOf(double d)?
public class MyString {
private char[] a;
public MyString(String s) {
this.a = s.toCharArray();
}
public MyString(char[] a) {
this.a = a;
}
public String toString() {
return new String(a);
}
public int length() {
return a.length;
}
public char charAt(int i) {
return a[i];
}
public static MyString valueOf(int i) {
int digits = (int)(Math.log10(i)+1);
char[] b = new char[digits];
for (int j = 0; j < digits; j++) {
b[j] = (char) (48 + i / 10);
i = i % 10;
if (i < 10) {
b[j + 1] = (char)(48 + i);
break;
}
}
MyString ms = new MyString(b);
return ms;
}
public static MyString valueOf(double d) {
char[] d1 = new char[digits];
//Take each digit of the number and enter it into the array
MyString ms = new MyString(d1);
return ms;
}
public static void main(String[] args) {
}
最佳答案
我假设您这样做是为了好玩……所以这就是我采用的方法。您已经有了 valueOf(int i),那么为什么不基本上重用该函数。只需取 double 并继续乘以 10,直到得到一个 int。跟踪小数点的位置,然后你基本上调用你的 valueOf(int i) 但也包括小数点。
我在运行你的代码时遇到了问题,所以我重新做了 valueOf(int i),然后创建了 valueOf(int i, int decimalSpot),传入 -1 或 0 作为小数点,然后它是一个整数值,不要使用一个小数位。
无论如何,这就是我想出的。已经晚了,所以可能不是最干净的代码,但应该给你一个概念证明。
public class MyString {
private char[] a;
public MyString(String s) {
this.a = s.toCharArray();
}
public MyString(char[] a) {
this.a = a;
}
public String toString() {
return new String(a);
}
public int length() {
return a.length;
}
public char charAt(int i) {
return a[i];
}
public static MyString valueOf(int i) {
return MyString.valueOf(i,-1);
}
public static MyString valueOf(double d) {
int decimalPlace = 0;
while (d != (int)d)
{
decimalPlace++;
d = d*10;
}
return MyString.valueOf((int)d,decimalPlace);
}
public static MyString valueOf(int i, int decimalSpot) {
int index=0;
int digits = (int)(Math.log10(i)+1);
int stringLength=digits;
if (decimalSpot == 0) decimalSpot=-1; // Don't return 1234. - just return 1234
if (decimalSpot != -1)
{
// Include an extra spot for the decimal
stringLength++;
}
char[] b = new char[stringLength];
for (int j = digits-1; j >= 0; j--) {
int power = (int) Math.pow(10,j);
int singleDigit = (int) Math.floor(i/power);
i = i - power*singleDigit;
b[index++] = (char) (48 + singleDigit);
if (decimalSpot==j)
{
b[index++] = '.';
}
}
MyString ms = new MyString(b);
return ms;
}
public static void main(String[] args) {
MyString ms = MyString.valueOf(12345);
System.out.println(ms);
ms = MyString.valueOf(12345.12313);
System.out.println(ms);
}
}
关于java - 在 Java 的 String 类中重新创建 valueOf(double d),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21153092/
String.valueOf(null); 为什么调用 valueOf(char[] c) 而为什么不调用 valueOf(Object o);?? 为什么 String.valueOf(null);
这个问题已经有答案了: Why does String.valueOf(null) throw a NullPointerException? (4 个回答) 已关闭 4 年前。 这不起作用(抛出空指
这个问题在这里已经有了答案: Why can't I access a property of an integer with a single dot? (5 个答案) 关闭 4 年前。 我猜 j
为什么下面的两个表达式返回不同的结果? Date().valueOf() "Fri Feb 07 2014 16:03:34 GMT-0500 (Eastern Standard Time)" new
使用阿拉伯数字 Integer.valueOf("۱")返回整数 1 但 Float.valueOf("۱")或 Float.parseFloat("۱")抛出 NumberFormatExcepti
我在处理一个问题时遇到了这个问题。发生的事情是: 当我们使用它时:BigInteger.valueOf(10000) 它给出的值为 10000 但是 当我们使用此 BigInteger.valueOf
这个问题是由strange HashMap.put() behaviour提示的 我想我明白为什么了Map.put需要 K但是Map.get需要 Object ,似乎不这样做会破坏太多现有代码。 现在
在我看来, reflect.ValueOf(&x).Elem() 等于 reflect.ValueOf(x) 因为 .Elem() 是获取reflect.Value 包含的指针的实际值。代码来了,js
我刚刚遇到了这个小问题,我希望其他人对此提出意见 我想知道将 String 转换为 int 的最佳解决方案是什么 (int)(float)Float.valueOf(s) 或 Float.valueO
我遇到了 IntegerCache 的问题:使用内部使用 iBatis PreparedStatement 类的 iBatis 数据访问框架。 像这样调用数据库过程 { call UPDATE_PRO
我正在阅读 javascript 手册并且我有以下代码: //sum function sum(arg1) { var sum = arg1; function f(arg2) {
这个问题在这里已经有了答案: Why does String.valueOf(null) throw a NullPointerException? (4 个回答) 关闭6年前。 对于以下行为是否有逻
我在调用 String.valueOf 方法时遇到问题。作为参数,我传递了返回 Integer 类型的通用方法。然后抛出异常,因为程序试图将返回的 Integer 转换为 char[] 以调用 Str
我正在创建 .jsp 页面并收到有关它的错误; String energyv=""; int number= Integer.parseInt(request.getP
我正在尝试使用枚举来包装应用程序中的某些错误代码。 public enum ErrorStatus { PAGE_NOT_FOUND("http 404", "lorem ipsum")
如果语句工作正常。其代码如下所示 if (getInput1.getText() != null) { float answer2 = Float.valueOf(getInput2.getTe
int x = 5; String s = "x = " + x; 在这种情况下,当原始类型转换为 String 时,将调用 valueOf() 方法。但如果我们这样做 System.out.prin
在我的工作中,所有开发人员都使用 Double.valueOf 而不是 new Double 构造函数。在每种情况下。对于整数或短,我可以理解缓存值,但不能理解 double和 float . 我看
我正在学习 JavaScript。这是我的问题: 我正在比较两个日期以确定它们是否相等。为此,我在两个日期上使用了 valueOf(),但是当我检查相同的日期时返回不同的值。 var today=ne
假设我需要通过 Array 类型覆盖内部 valueOf()... 作为explained here valueOf() 方法返回指定对象的原始值...所以,我想我们可以将原始值设置为任何数据类型..
我是一名优秀的程序员,十分优秀!