当前位置: 首页 > 知识库问答 >
问题:

我写了一个代码,把一个字符串中的四个数字加在一起,但答案比它应该的(重复)大192

濮阳弘扬
2023-03-14
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int num = sc.nextInt();

    for(int i = 0; i <= num; i++){
        String calculation = sc.next();
        String b = sc.next();
        int sum = 0;

        if(calculation.equals("ADD")){
            int num2 = Integer.parseInt(b);
            int num3 = String.valueOf(Math.abs((long)num2)).charAt(0);
            int num4 = String.valueOf(Math.abs((long)num2)).charAt(1);
            int num5 = String.valueOf(Math.abs((long)num2)).charAt(2);
            int num6 = String.valueOf(Math.abs((long)num2)).charAt(3);          
            sum = num3 + num4 + num5 + num6;
        }
        System.out.println(sum - 192);
    }
}}

如果输入是:1,加1234,那么答案将是202,而不是10。我不确定我的代码哪里错了。

共有1个答案

岑明辉
2023-03-14

您将ascii代码1、2、3和4加在一起,即202。你的代码全错了:

  • 将一个int转换为long和再次转换为int而不对其进行操作是没有用的。
  • 如果数字可能为负数,则只取一次绝对值,而不是每个数字。
  • num2是int:1234
  • string.valueOf((long)num2)是一个字符串:“1234”
  • string.valueOf((long)num2).charat(0)是一个字符:“1”

所以,和在文字上等于'1'+'2'+'3'+'4'

int num3 = b.charAt(0) - '0';
int num4 = b.charAt(1) - '0';
int num5 = b.charAt(2) - '0';
int num6 = b.charAt(3) - '0';          
sum = num3 + num4 + num5 + num6;
sum = b.charAt(0) + b.charAt(1) + b.charAt(2) + b.charAt(3) - 4*'0';
int sum = 0;
for (char c : b.toCharArray()) {
    if (c >= '0' && c <= '9') sum += c - '0';
}
 类似资料:
  • 如何检查一个字符串是否在另一个字符串中,但匹配项需要在前面,而不是中间或最后。例如,a="

  • 我已经将下面的c程序编译成asm,看看它使用了什么指令。我在C中的内容是: 我对指令“应该是什么”的想法(根据我对asm非常有限的知识)是: null

  • 本文向大家介绍写一个字符串重复的repeat函数相关面试题,主要包含被问及写一个字符串重复的repeat函数时的应答技巧和注意事项,需要的朋友参考一下

  • 我必须定义一个包含大写方法的Translator类。该方法将收到一个StringBuffer,它只包含英文字母和空格,并将更改它,以便每个单词都以大写字母开头。 //我需要定义的类

  • 问题内容: 我从书中看到以下代码: 但没有提到为什么“一个”大于“四个”。我试过了,它小于a和b。我想知道JavaScript如何比较这些字符串。 问题答案: 因为和许多编程语言一样,字符串是按字典顺序进行比较的。 你可以认为这是一个空想家版本的字母顺序,区别在于字母排序仅覆盖了26个字符通过。

  • 本文向大家介绍写一个把字符串大小写切换的方法相关面试题,主要包含被问及写一个把字符串大小写切换的方法时的应答技巧和注意事项,需要的朋友参考一下 var reversal = function(str){ var newStr = ''; if(Object.prototype.toString.call(str).slice(8,-1) !== 'String'){ alert("请填写字符串")