本题目要求读入若干个代表整数的字符串,然后将其转化为整数。

如果该数>=10000且<=20000,则依次输出其对应的二进制字符串、八进制字符串、十六进制字符串。

否则将字符串中的每个数字抽取出来,然后将所有数字加总求和。

提示:参考jdk文档的Integer,

输入样例:

123
10000
-123
314159265

输出样例:

1 2 3 6
10011100010000,23420,2710
1 2 3 6
3 1 4 1 5 9 2 6 5 36

代码如下:

import java.util.Scanner;
import java.lang.Integer;
import java.lang.Math;
public class Main{
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext())
        {
            int num=sc.nextInt();
            num=Math.abs(num);
            if(num>=10000&&num<=20000)
            {
                System.out.println(Integer.toBinaryString(num)+","+Integer.toOctalString(num)+","+Integer.toHexString(num));
            }else{
                if(num==0){
                    System.out.println("0 0");
                    continue;
                }
                int orinum=num;
                int count=0;
                while(num!=0)
                {
                    num/=10;
                    count++;
                }
                num=orinum;
                int[] temp=new int[count];
                int sum=0;
                int i=0;
                while(num!=0)
                {
                    temp[i]=num%10;
                    num/=10;
                    sum+=temp[i];
                    i++;
                }
                int j=count-1;
                while(j>=0)
                {
                    System.out.print(temp[j]+" ");
                    j--;
                }
                System.out.println(sum);
            }
        }
        sc.close();
    }
}

做题记录:

1、while循环条件错误

Java 中 while循环的条件必须是严格的布尔值(true或false),不允许用数字(如 1 或 0)代替,这和 C/C++ 等语言不同。我一开始写的是 while(num) 和 while(j) ,num 和 j 是整数,导致了语法错误。正确写法应该是 while(num != 0) 和 while(j >= 0)。

2、没有满足输出整数中的所有数字

检查后发现,输入为 0 的情况没有被我考虑到,不过直接在else中补充这个情况就好了。

以上就是我这道题的做题反思。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐