如何解决编写一个函数读取 number(s, i) ,它接受一个字符串 s 和一个整数 I,并返回一个由以下组成的对
制作计算器 在这个问题中,您必须编写一个函数求值,该函数求值的字符串表示为 一个简单的数学表达式,例如"(1+2)3",并对其求值以获得结果 数字。 输入字符串可能包括以下任何一项:正数、+、-、、/、(、)。电子 数字可能包含也可能不包含小数部分,例如数字 3 可以表示为“3”或 作为“3.0”或任意数量的零。所有表达式都将完全用括号括起来,例如你 只会给出“(1+(23))-4”,而不是“1+23-4”。您的实现应该返回 这种形式的任何可能表达的正确结果。 是一项复杂的任务,可能需要多个辅助函数。这是一个建议 1 方法,尽管只要正确,您可以采用不同的方法:
- 编写一个函数读取 number(s,i),它接受一个字符串 s 和一个整数 I,并返回一个 对包含 (i) 从字符串的第 i 个字符开始的数字,以及 (ii) 数字最后一个字符后的索引。例如,读取 number("1+(2.4/3)",3) 应该返回 (2.4,6) 因为 "2.4" 由给定字符串的第 3 到 5 个字符组成。
解决方法
遍历所有字符,并检查条件
double d=0;
int j=0;
int di=-1;
for(j=i;j<s.length();j++)
{
char c=s.charAt(j);
if(c>='0'&&c<='9')
{
d=d*10+((int)(c-'0'));
}
else if(c=='.')
di=j;
else
break;
}
if(di>=0)
d/=Math.pow(10,j-di);
这里 d 是值,j 是索引。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。