我必须在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;
}
}
也许最好的处理方法是使用整数#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;
}
检查以下代码是否适用于您
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()返回数字或字符串值,具体取决于使用它的上下文。