Java 将字符串转换为数字的输出不符合预期
给定一个字符串作为输入,将其转换为它表示的数字。您可以假定字符串仅由数字组成。它不会由负数组成。不要使用Integer.parseInt来解决此问题 MyApproach 我将字符串转换为字符数组并存储了原始数字,但无法将其转换为单个数字 我尝试转换单个元素,但数字可以是任意长度的。因此,很难遵循这种方法 提示:我有一个提示,可以使用place值添加数字 例如,如果数字是2300。我以数组的形式存储每个数字。那么它应该是2*1000+3*100+0*10+0=2300 但我无法将其转换为代码 有人能指导我怎么做吗 注意:我不能使用任何内置函数。Java 将字符串转换为数字的输出不符合预期,java,string,Java,String,给定一个字符串作为输入,将其转换为它表示的数字。您可以假定字符串仅由数字组成。它不会由负数组成。不要使用Integer.parseInt来解决此问题 MyApproach 我将字符串转换为字符数组并存储了原始数字,但无法将其转换为单个数字 我尝试转换单个元素,但数字可以是任意长度的。因此,很难遵循这种方法 提示:我有一个提示,可以使用place值添加数字 例如,如果数字是2300。我以数组的形式存储每个数字。那么它应该是2*1000+3*100+0*10+0=2300 但我无法将其转换为代码 有
public int-toNumber(字符串str)
{
char ch1[]=str.toCharArray();
int c[]=新int[ch1.length];
int k=0;
对于(inti=0;i你可以
int no = 0;
for(int i = 0; i < c.length; i++){
no += c[i] * Math.pow(10, c.length - 1 - i);
}
int no=0;
for(int i=0;i
您可以这样做
int no = 0;
for(int i = 0; i < c.length; i++){
no += c[i] * Math.pow(10, c.length - 1 - i);
}
int no=0;
for(int i=0;i
如果循环遍历已有的char数组并获取最后一个值,则将其放入If语句并添加到to number整数中,无论该整数是多少(使用10 If语句)。下一步转到倒数第二个值,只做同样的事情,这次将所得数字乘以10,然后再将其添加到总数中。使用1*10^(远离末尾的值)重复此操作乘以从if语句中得到的数字。如果循环使用已有的字符数组并获取最后一个值,则将其放入if语句,并将其添加到to数字整数中,无论该数字是多少(使用10个if语句)。下一步转到倒数第二个值,只做同样的事情,这次将所得数字乘以10,然后再将其添加到总数中。使用1*10^(远离末尾的值)重复此操作乘以从if语句得到的数字。当我看到这个问题时,我想到的是将当前代码得到的数字乘以它们在字符中的位置:
int desiredNumber = 0;
for(int k=1; k<=c.length; k++) {
desiredNumber += c[k] * (Math.pow(10, c.length - k));
}
int desiredNumber=0;
对于(int k=1;k当我看到这个问题时,我想到的是用当前代码得到的数字乘以它们在字符中的位置:
int desiredNumber = 0;
for(int k=1; k<=c.length; k++) {
desiredNumber += c[k] * (Math.pow(10, c.length - k));
}
int desiredNumber=0;
对于(int k=1;k一个数字字符('0'
-'9'
)可以使用以下方法转换为整数值(0
-9
):
这是因为数字字符在ASCII/Unicode中都是连续的
至于计算完整数字,对于输入2300
,您不需要:
2 * 1000 + 3 * 100 + 0 * 10 + 0
相反,您需要使用循环的更增量的方法:
r = 0
r = r * 10 + 2 (2)
r = r * 10 + 3 (23)
r = r * 10 + 0 (230)
r = r * 10 + 0 (2300)
这比尝试计算公式需要的1000
(Math.pow(10,3)
)要好得多
这应该是足够的信息,您可以对其进行编码。如果没有,请创建一个新问题。可以使用以下方法将数字字符('0'
-'9'
)转换为整数值(0
-9
):
这是因为数字字符在ASCII/Unicode中都是连续的
至于计算完整数字,对于输入2300
,您不需要:
2 * 1000 + 3 * 100 + 0 * 10 + 0
相反,您需要使用循环的更增量的方法:
r = 0
r = r * 10 + 2 (2)
r = r * 10 + 3 (23)
r = r * 10 + 0 (230)
r = r * 10 + 0 (2300)
这比尝试计算公式需要的1000
(Math.pow(10,3)
)要好得多
这应该是足够的信息,您可以对其进行编码。如果没有,请创建一个新问题。您不需要进行幂运算或跟踪乘数。每次添加一个新数字时,只需将您的跑步总数乘以10。然后使用c-“0”
将字符转换为数字:
int n = 0;
for (int i = 0; i < str.length(); i++) {
n = n * 10 + str.charAt(i) - '0';
}
您不需要进行幂运算或跟踪乘数。每次添加新数字时,只需将跑步总数乘以10。然后使用c-“0”
将字符转换为数字:
int n = 0;
for (int i = 0; i < str.length(); i++) {
n = n * 10 + str.charAt(i) - '0';
}
不是数学吗?PoW?循环使用一个VaR,你可以多乘10(到多个NR),然后考虑一个开关语句,如果…更容易阅读…<代码>如果(CH1[i]=48)<代码> >如果(CH1[i]='1')更清楚。甚至数学。POW,循环向后使用一个VAR,你可以乘以10(到多个NR)。如果不是……更容易阅读……(代码)>(CH1[i]=48)< /代码> -> <代码> if(CH1[i]='1')
更清晰。@anandmishra以另一种方式循环仍然会产生错误的结果。@anandmishra以另一种方式循环仍然会产生错误的结果。简而言之,我的答案只有解决方案版本,除了我试图不只是将家庭作业答案交给OP。哦,好吧。;-)@安德烈亚斯在发帖之前没有读过你的答案,否则我可能就不会麻烦了。与其说是试图把作业交给OP,不如说是指出其他解决方案过于复杂。“仅解决方案”有点苛刻,但我确实解释了(如果简单的话)它的作用。无论如何,你得到了我的投票:)简而言之,我的答案只有解决方案版本,除了我试图不只是把家庭作业答案交给OP。哦,好吧。-@Andreas在发帖之前没有读过你的答案,否则我可能不会麻烦。与其说是试图交给OP家庭作业,不如说是指出其他解决方案不必要的复杂。“只有解决方案”虽然有点苛刻,但我确实解释过(如果简短的话)它的作用。无论如何,我投了你一票:)