假设打印1~100的数字中 判断2个相邻数字不能出现 (相邻数字:比如1,2 3,4 5,6等 )
我用indexOf弄了半天没效果 请赐教!
[quote]其实就是自己想的一个问题 打印1000以内的数字 不允许有相邻数字出现 比如10 101 12 21等 [/quote]
[code="java"]int N = 100;
Set result = new HashSet(N);
Random random = new Random();
while (result.size() < N) {
int i = random.nextInt(1000) + 1; // 1 - 1000 的随机数
if (!(result.contains(i + 1) || result.contains(i - 1) || result.contains(i))) {
// 集合中不存在 相差为1的数
result.add(i);
}
}
System.out.println(result);[/code]
这一些数字是以","分隔吗?
[code="java"]
public static void main(String[] args) {
System.out.println(test("1,2"));
}
private static boolean test(String string) {
String[] strs = string.split(",");
int[] array = new int[strs.length];
for (int i = 0; i < strs.length; i++) {
array[i] = Integer.parseInt(strs[i]);
if (i > 0 && Math.abs(array[i] - array[i - 1]) == 1) {
return false;
}
}
return true;
}
[/code]
[quote]没有逗号 怎么把一个串数字分割成数组[/quote]
数字是一位数字,还是有空格?
数字是连在一起的:
[code="java"]public static void main(String[] args) {
System.out.println(test("1356"));
}
private static boolean test(String string) {
char[] cs = string.toCharArray();
int[] array = new int[cs.length];
for (int i = 0; i < cs.length; i++) {
array[i] = Integer.parseInt(String.valueOf(cs[i]));
if (i > 0 && Math.abs(array[i] - array[i - 1]) == 1) {
return false;
}
}
return true;
}[/code]
如果是空格,则用之前的把","改成" "。
如果没有分隔符,你怎么知道56表示的是五十六还是五和六,这不是搞笑么?
[quote]这样是一个方法 我主要是想判断一个组数字 不能有相邻的数字出现 比如23 和 32 以楼下这种思路 要做大于1 小于1的判断 能用INDEXOF做这个么?[/quote]
不明白一组是什么。 给出一些输入样例和输出样例看看。
到底是数值还是字符串?
如果是数值就简单了
字符串就麻烦点
还请楼主清楚点
数值的话: (numb1 - bumb2 = 1 || numb1 - numb2 = -1) return true;
字符串:还得楼主明示
额,这种问题。。。还真是幼稚。