描述
已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数。
-
输入
-
第一行为M,表示测试数据组数。
接下来M行,每行包含一个测试数据。
输出
输出M行,每行为对应行的n-1位数(忽略前缀0)。如果除了最高位外,其余位都为0,则输出0。
这道题主要有以下几个要克服的
1.怎样求的输入的数是几位,这里采用的是输入一个字符串,然后把字符串转为字符数组,可以求的字符数组的长度
2.怎样判断最高位后面的数字是不是0以及要排除不是0的数字后面又是0的情况,这里采用的判断条件有两个,首先也是最基本的是要求的数有几位0,然后定义一个布尔变量,初始化为true,当有非零位时让布尔变量为false
3.这个数中有几个0 ,需要进行计数,当这个数全是0的时候需要输出0
4.因为要输出非0 的数,所以可以在循环中一个一个输出,但为了避免输出0,所以就要当2中的两个条件达成时,就要跳出本次循环,使用continue
5.由于计算的是n-1位数,所以在计算0 的总个数的变量的初始化是1,遍历这个字符串时从1开始就行了
具体代码如下
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
while(m--!=0) {
String n = sc.next();
char [] c = n.toCharArray();
int count = 1;
boolean flag = true;
for (int i = 1; i < c.length; i++) {
if (flag && c[i]=='0') {
count++;
continue;
}
System.out.print(c[i]);
flag = false;
}
if (count == c.length) {
System.out.println('0');
} else {
System.out.println();
}
}
}
}