编写一个函数读取 number(s, i),它接受一个字符串 s 和一个整数 I,并返回一个由以下组成的对
Posted
技术标签:
【中文标题】编写一个函数读取 number(s, i),它接受一个字符串 s 和一个整数 I,并返回一个由以下组成的对【英文标题】:Write a function read number(s, i) that takes a string s and an integer I, and returns a pair consisting of 【发布时间】:2021-04-23 09:12:27 【问题描述】:制作计算器 在这个问题中,你必须编写一个函数求值,它接受一个字符串表示 一个简单的数学表达式,例如"(1+2)3",并对其求值以获得结果 数字。 输入字符串可以包括以下任何一种:正数、+、-、、/、(、)。 e 数字可能包含也可能不包含小数部分,例如数字 3 可以表示为“3”或 作为“3.0”或任意数量的零。所有表达式都将用括号括起来,例如你 只会给出“(1+(23))-4”,而不是“1+23-4”。您的实现应该返回 这种形式的任何可能表达的正确结果。 是一项复杂的任务,可能需要多个辅助函数。这是一个建议 1 方法,尽管只要它是正确的,您可能会采取不同的做法:
-
编写一个函数读取 number(s, i),它接受一个字符串 s 和一个整数 I,并返回一个
由 (i) 从字符串的第 i 个字符开始的数字和 (ii)
数字的最后一个字符后的索引。例如,读取数字("1+(2.4/3)",3)
应该返回 (2.4,6),因为“2.4”由给定字符串的第 3 到 5 个字符组成。
【问题讨论】:
【参考方案1】:遍历所有字符,检查条件
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是索引。
【讨论】:
以上是关于编写一个函数读取 number(s, i),它接受一个字符串 s 和一个整数 I,并返回一个由以下组成的对的主要内容,如果未能解决你的问题,请参考以下文章
编写函数reverse(int number),它的功能是将number逆序输出,在主函数中输入一个整数并调用该函数。