输入
输入一个正整数 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");}}}
如果觉得《题目描述:输入一个正整数 n (100 =< n <= 200000000) 输出是否为dancing number 及n的位数。》对你有帮助,请点赞、收藏,并留下你的观点哦!