Java StringToNUMBER-如果字符串包含除数字以外的任何内容和首字母“0”,则返回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 下面是我到目前为止的代码。。。。任何帮助

我必须在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,一切正常!非常感谢!