[Java]PTA:jmu-Java-01入门-取数字
·
本题目要求读入若干个代表整数的字符串,然后将其转化为整数。
如果该数>=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中补充这个情况就好了。
以上就是我这道题的做题反思。
更多推荐



所有评论(0)