输入
输入一个正整数 n
输出
输出是否为dancing number,及n的位数(输出格式为:0或1,位数 其中0表示n不是dancing number,1表示n是dancing number),如果100 =< n <= 200000000;否则输出“error input”
提示
1. Dancing Number的定义:
我们称n位整数 X = x_{n}x_{n-1}x_{n-2}.....x_{2}x_{1} 是一个dancing number,
如果X的第i位数x_{i} 同时大于 x_{i-1}和 x_{i+1} 或者 同时小于 x_{i-1}和 x_{i+1} , 其中 i 属于 {2,3,..., n-2, n-1 } ,
即满足以下两个条件之一:
1) x_{1} < x_{2} 并且 x_{2} > x_{3} 并且 x_{3} < x_{4} 并且 x_{4} > x_{5}......
2) x_{1} > x_{2} 并且 x_{2} < x_{3} 并且 x_{3} > x_{4} 并且 x_{4} < x_{5}.....
2. 要考虑用户输入的不是整数的情形,这时也要输出“error input”,实现方法用Scanner类中的 hasNextInt()方法来阅读,返回false即为错误输入情形。
import java.util.*;
public class week3dancingnumber4 {
public static void main (String[] args) {
int x,flag=0;
Scanner reader = new Scanner(System.in);
if(reader.hasNextInt()){
x = reader.nextInt();
if(x>=100&&x<=200000000){
Integer num = Integer.valueOf(x);
String str = num.toString();
int[] a = new int[str.length()];
for(int i=0;i<str.length();i++){
Character ch = str.charAt(i);
a[i] = Integer.parseInt(ch.toString());
}
for(int i = 1;i<a.length-1;i++){
if((a[i]<a[i-1] && a[i]>a[i+1]) || (a[i]>a[i-1] && a[i]<a[i+1]) || a[i] == a[i-1] || a[i] == a[i+1]){
flag = 1;
}
}
if(flag == 1){
System.out.print("0"+","+a.length);
}
else{
System.out.print("1"+","+a.length);
}
}
else{
System.out.print("error input");
}
}
else{
System.out.print("error input");
}
}
}