当前位置: 首页 > 知识库问答 >
问题:

Java StringToNUMBER-如果字符串包含除数字以外的任何内容,则返回0,对于负数,则返回首字母“-”

弘志勇
2023-03-14

我必须在Java中实现以下函数:公共int stringToNumber(字符串输入),而不使用整数或任何其他解析字符串的类或方法。我必须循环字符串的字符。

我试图创建一个使用循环将字符串转换为整数的类。

现在,我想弄清楚,如果字符串包含数字以外的任何内容,以及负数的首字母“-”,如何返回0。

此外,如果整数太大或太小(Integer.MIN_SIZE到Integer.MAX_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;
}
}

共有2个答案

子车俊哲
2023-03-14

也许最好的处理方法是使用整数#parseInt(),它接受字符串输入,并返回整数结果,或者在输入不能强制为整数时引发异常:

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;
}
曹高轩
2023-03-14

检查以下代码是否适用于您

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;
            }
 类似资料:
  • 问题内容: 例如,需要使用 字符串找出只读取字符串中 数字 的方法, 即 我的尝试 问题答案: 试试这个: 由于返回的是文本数组,因此您应该通过来访问第一个元素。

  • 问题内容: 我的“设备”表中有以下数据 我执行以下查询 返回下面给出的结果 如何得出这一点,以便它应该忽略NULL并且结果应该是 问题答案: 通过将其包装在空字符串中来转换值

  • 问题内容: 在Java中,我想检查中是否存在字符串。 像这样: 问题是myList可以包含未修剪的数据: 如果我的项目在列表中,我希望它返回true 。我应该怎么做?我想避免循环结构。 问题答案: 您需要迭代列表并致电进行搜索: 或者,如果要执行 忽略大小写搜索 ,请使用:

  • 问题内容: 我试图除以2计数以返回一个百分比。 返回以下查询: 我应该应聘演员吗? 问题答案: 我会用两个s来做不同的事情:

  • 问题内容: 我有一个这样的正则表达式: 如果单词包含 bar , baz 或 bad ,则函数必须返回True 。简而言之,我需要python的regexp模拟 我怎么知道呢?谢谢! 问题答案:

  • 问题内容: 在MySQL中,是否可以将“总计”字段设置为零(如果它们为NULL)? 这是我所拥有的: 数据输出正常,但NULL字段应为。 如何在MySQL中为NULL返回0? 问题答案: 使用IFNULL: 从文档中: 如果expr1不为NULL,则IFNULL()返回expr1; 否则返回expr2。IFNULL()返回数字或字符串值,具体取决于使用它的上下文。