【问题标题】:Operation on character in javajava中对字符的操作
【发布时间】:2014-11-04 23:49:39
【问题描述】:

我有这个方法:

public static String appliquerCoup( String combinaison, String coup ){
    String res = "";
    for(int i = 0; i < 3; i++){
        res = res + (combinaison.charAt(i) - coup.charAt(i));
    }
    return res;
}

如果我在主要应用这个

System.out.println(appliquerCoup("414", "020")

我有:

4-14

尽管合乎逻辑,但它给我一个-1 代表2-1 = -1 如果操作不如0,我希望它把我设为0。

所以我做了这些改变:

public static String appliquerCoup( String combinaison, String coup ){
    String res = "";
    for(int i = 0; i < 3; i++){
        char cFinal = combinaison.charAt(i) - coup.charAt(i);
        if(cFinal < '0')
        cFinal = 0;
        res = res + cFinal;
    }
    return res;
}

但它是说我在第 4 行有

possible loss of precision
found :int; required: char

你能帮我找到解决办法吗?我已经尝试了很长时间。

非常感谢

【问题讨论】:

  • 尝试将您的字符转换为整数。执行字符减字符操作没有多大意义。我也不确定你想做什么......如果你能详细说明一下。
  • 解释一下:我想做的是以下内容:例如:我想在 414 上减去 020...预期的结果是 404。你会明白你用第一,第二和第二,第三和第三……如果减法是负数,它必须返回0。清楚吗?
  • 您对那里的输入非常有信心;你真的希望输入字符串中只有数字吗?
  • @khelwood 找到解决方案,谢谢你们......

标签: java string character operation


【解决方案1】:

一个字符减去另一个字符的结果是一个整数。它告诉你它们之间的距离。

假设您正在计算'b' - 'a'。它们之间的区别是数字1,而不是字符'1'

您可以将cFinal 更改为int,它应该可以工作,因为将整数附加到字符串是合法的:

int cFinal = combinaison.charAt(i) - coup.charAt(i);
if (cFinal < 0) // NB: compare with 0, not '0'
    cFinal = 0;
res = res + cFinal;

或者您可以使用max 更简洁地强制执行下限。

res += Math.max(0, combinaison.charAt(i) - coup.charAt(i));

【讨论】:

  • 如果我将 cFinal 更改为 int,结果给我一个 000... 我不知道为什么
  • @biiwop 你把if (cFinal &lt; '0')改成if (cFinal &lt; 0)了吗?
猜你喜欢
  • 1970-01-01
  • 2015-03-08
  • 2014-03-21
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多