您好我的代码有问题,我必须计算表达式中使用的变量,当两个或多个变量相同时,它应该计为1.例如,a + ab =使用的变量总数:2。问题是当我输入一个+ a =使用的变量总数时:2。 这是我的代码:
public void simplify(String strexp){
int ex =strexp.length();
for (int a=0;a<=ex-1;a++){
if(a==0)
{
if (Character.isLetter(strexp.charAt(a)))
{
b++;
}
}
else{
for(int c=0;c<=a-1;c++){
if (Character.isLetter(strexp.charAt(c))==Character.isLetter(strexp.charAt(a)))
{
System.out.println("equal");
break;
}
else if (Character.isLetter(strexp.charAt(c))!=Character.isLetter(strexp.charAt(a)))
{
//if(c==a-1)
//{
b++;
System.out.println("nomatch");
// }
}
}
}
}
JOptionPane.showMessageDialog(null, b);
}
答案 0 :(得分:0)
将字符串转换为char数组,将其添加到键为char的映射及其变量值的值。
import java.util.*;
class Main
{
public static void main (String[] args)
{
String yourString = "UNDERSTAND";
Map<Character, Integer> count = new TreeMap<Character, Integer>();
for (char c : yourString.toCharArray()) {
if (count.containsKey(c)) {
count.put(c, (int) count.get(c) + 1);
} else {
count.put(c, 1);
}
}
System.out.println(count);
}
}
答案 1 :(得分:0)
您需要跟踪您所看到的变量。一种方法可能是使用Set<char>
。每当看到一个角色时,将其添加到该角色。唯一运算符的数量将是集合中的字符数。
答案 2 :(得分:0)
使用列表计算变量总数
public static int simplify(String strexp) {
int length = strexp.length();
List<Character> usedVariables = new ArrayList<Character>();
for (int i = 0; i < length; i++) {
char c = strexp.charAt(i);
if (Character.isLetter(c) && !usedVariables.contains(c)) {
usedVariables.add(c);
}
}
return usedVariables.size();
}
public static void main(String[] args) {
System.out.println(simplify("x + b = d"));
System.out.println(simplify("x + x = a"));
System.out.println(simplify("x + x = x / 2"));
}
打印出来
3
2
1
答案 3 :(得分:0)
很难跟上这么低的水平。为什么不使用正则表达式查找所有匹配项,然后构建一组唯一的匹配项呢?
标题具有误导性。任务更像是词法令牌计数。它比简单的角色高出一步。
答案 4 :(得分:0)
这个单行怎么样?
String complexExpression = "a + a*2 (2*a + b - 34)/2 + 3*c";
System.out.println(Arrays.toString(complexExpression.split("[+*()-/\\d\\s&&[^a-z]]+")));
System.out.println(new HashSet<String>(Arrays.asList(complexExpression.split("[+*()-/\\d\\s&&[^a-z]]+"))).size());
以上代码为我打印以下内容:
[a, a, a, b, c]
3
当然,我不建议使用相同的模式多次执行split
操作。
答案 5 :(得分:0)
这是:
public class DistinctCharCount {
public static void main(String[] args) {
String s = "a+ab+abc+abcd";
HashSet<Character> charSet = new HashSet<Character>();
for(int i=0;i<s.length();i++) {
charSet.add(s.charAt(i));
}
System.out.println("Distinct Char Count : " + charSet.size());
}
}