Java StringToNUMBER-如果字符串包含除数字以外的任何内容和首字母“0”,则返回0-&引用;对于负数
我必须在Java中实现以下函数:public int stringToNumber(字符串输入),而不使用Integer或任何其他解析字符串的类或方法。我必须在字符串的字符上循环 我试图创建一个使用循环将字符串转换为整数的类 现在,我试图弄清楚,如果字符串包含除数字以外的任何内容以及负数的首字母“-”,如何返回0 此外,如果整数太大或太小(Integer.MIN\u SIZE到Integer.MAX\u SIZE或-2^31到2^31-1),我尝试返回0 下面是我到目前为止的代码。。。。任何帮助都将不胜感激Java StringToNUMBER-如果字符串包含除数字以外的任何内容和首字母“0”,则返回0-&引用;对于负数,java,string,Java,String,我必须在Java中实现以下函数:public int stringToNumber(字符串输入),而不使用Integer或任何其他解析字符串的类或方法。我必须在字符串的字符上循环 我试图创建一个使用循环将字符串转换为整数的类 现在,我试图弄清楚,如果字符串包含除数字以外的任何内容以及负数的首字母“-”,如何返回0 此外,如果整数太大或太小(Integer.MIN\u SIZE到Integer.MAX\u SIZE或-2^31到2^31-1),我尝试返回0 下面是我到目前为止的代码。。。。任何帮助
public class StringToNumber {
public static void main(String[] args) {
StringToNumber stn = new StringToNumber();
for (String arg : args) {
int number = stn.stringToNumber(arg);
System.out.format("Input number: %s, parsed number: %d %n", arg, number);
}
}
public int stringToNumber(String stn) {
int number = 0, factor = 1;
for (int n = stn.length()-1; n >= 0; n--) {
number += (stn.charAt(n) - '0') * factor;
factor *= 10;
}
return number;
}
}
处理此问题的最佳方法可能是使用,它接受字符串输入,如果无法将输入强制为整数,则返回整数结果或引发异常:
public int stringToNumber(String stn) {
int result;
try {
result = Integer.parseInt(stn);
}
catch (NumberFormatException e) {
System.out.println("String input cannot be converted to integer: " + stn);
result = 0; // return 0 as the failure value
}
return result;
}
处理此问题的最佳方法可能是使用,它接受字符串输入,如果无法将输入强制为整数,则返回整数结果或引发异常:
public int stringToNumber(String stn) {
int result;
try {
result = Integer.parseInt(stn);
}
catch (NumberFormatException e) {
System.out.println("String input cannot be converted to integer: " + stn);
result = 0; // return 0 as the failure value
}
return result;
}
检查以下代码是否适用于您
public int stringToNumber(String stn) {
int number = 0, factor = 1;
int negative = 0;
if(stn.charAt(0)=='-') {
negative =1;
}
for (int n = negative; n < stn.length(); n++) {
int digit = stn.charAt(n)-'0';
if(digit<0 || digit>9)
return 0;
if((negative==0) && (Integer.MAX_VALUE-digit)/10 <number)
return 0;
else if ((negative==1) && (Integer.MAX_VALUE-digit+1)/10 <number)
return 0;
number = number*10+ (stn.charAt(n)-'0');
}
if(negative == 1) {
return -1*number;
}
return number;
}
public int stringToNumber(字符串stn){
整数=0,系数=1;
int负=0;
如果(标准字符(0)='-'){
负=1;
}
for(int n=负;n 如果((负==0)和(&&(Integer.MAX_VALUE-digit)/10检查下面的代码是否适合您
public int stringToNumber(String stn) {
int number = 0, factor = 1;
int negative = 0;
if(stn.charAt(0)=='-') {
negative =1;
}
for (int n = negative; n < stn.length(); n++) {
int digit = stn.charAt(n)-'0';
if(digit<0 || digit>9)
return 0;
if((negative==0) && (Integer.MAX_VALUE-digit)/10 <number)
return 0;
else if ((negative==1) && (Integer.MAX_VALUE-digit+1)/10 <number)
return 0;
number = number*10+ (stn.charAt(n)-'0');
}
if(negative == 1) {
return -1*number;
}
return number;
}
public int stringToNumber(字符串stn){
整数=0,系数=1;
int负=0;
如果(标准字符(0)='-'){
负=1;
}
for(int n=负;n 如果((负==0)和(&&(Integer.MAX_VALUE-digit)/10,这绝对是最好的方法…但我必须在Java中实现以下函数:public int stringToNumber(字符串输入)不使用Integer或任何其他解析字符串的类或方法。这绝对是最好的方法…但我必须在Java中实现以下函数:public int stringToNumber(字符串输入)没有使用Integer或任何其他解析字符串的类或方法。太棒了!你的代码对我有效!我只是因为变量因子没有被使用而出错。我把它取出来,一切都正常!非常感谢!太棒了!你的代码对我有效!我只是因为变量因子没有被使用而出错。我把它取出来了ut,一切正常!非常感谢!