答题 一串数字,1,4,5,6,8,9,10,13,14,15,16怎么判断它是不是连续的,如果连续返回true,否则,false 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public static void main(String[] args) { String str1 = "1,2,3,4,5,6,7,8,10"; String str2 = "1,2,3,4,5,6,7,8,9,10"; System.out.println(isSeriateNumber(str1, ",")); System.out.println(isSeriateNumber(str2, ","));}// 假定序列是数字顺序是升序的// 只要获得第一值和最后一个值,通过其数值数计算一下,就可以得出是否是连的private static boolean isSeriateNumber(String strNum, String separator) { String[] strNums = strNum.split(separator); int start = Integer.parseInt(strNums[0]); int end = Integer.parseInt(strNums[strNums.length-1]); if(start + strNums.length - 1 == end){ return true; }else{ return false; }} 楼上的代码不准确如果是这样 public class test{ public static void main(String[] args) { String str1 = "1,2,3,4,9,5,6,7,8,10"; /////这里把9加到了4后面 String str2 = "1,2,3,4,5,6,7,8,9,10"; System.out.println(isSeriateNumber(str1, ",")); System.out.println(isSeriateNumber(str2, ","));}// 假定序列是数字顺序是升序的// 只要获得第一值和最后一个值,通过其数值数计算一下,就可以得出是否是连的private static boolean isSeriateNumber(String strNum, String separator) { String[] strNums = strNum.split(separator); int start = Integer.parseInt(strNums[0]); int end = Integer.parseInt(strNums[strNums.length - 1]); if (start + strNums.length - 1 == end) { return true; } else { return false; }}} 那就改一下,增加一个排序。public static void main(String[] args) { String str1 = "1,2,3,4,5,6,7,8,10"; String str2 = "2,3,4,5,6,7,8,9,10"; String str3 = "2,3,4,9,5,6,7,8,10"; System.out.println(isSeriateNumber(str1, ",")); System.out.println(isSeriateNumber(str2, ",")); System.out.println(isSeriateNumber(str3, ","));}private static boolean isSeriateNumber(String strNum, String separator) { String[] strNums = strNum.split(separator); int[] nums = new int[strNums.length]; for(int i=0; i<strNums.length; i++) { nums[i] = Integer.parseInt(strNums[i]); } Arrays.sort(nums); if(nums[0] + nums.length - 1 == nums[nums.length-1]){ return true; }else{ return false; }} to joejoe1991() ====================我感觉他的算法好像有问题 ,但好像不是你说的那个问题人家前提条件是 升序的 你的 4和9 调换位置 那还是升序的吗?如果里面有重复的数字 那怎么办? 比如 有两个10 而没有9?? to: rrrxxxhhh谢谢您的建议,这个问题我到没有注意到,如果存在这种情况的话,那这个算法根本不行,我再想一想,再次谢谢您的指正。 呵呵,再次订正一下,由于先前没有考虑到重复的问题,看来只能逐一进行比较了。public static void main(String[] args) { String str1 = "1,2,3,4,5,6,7,8,10"; String str2 = "2,3,4,5,6,7,8,9,10"; String str3 = "2,3,4,5,6,7,9,8,10"; String str4 = "2,4,4,5,6,7,9,8,10"; String str5 = "2,3,4,5,6,7,8,10,10"; System.out.println(isSeriateNumber(str1, ",")); System.out.println(isSeriateNumber(str2, ",")); System.out.println(isSeriateNumber(str3, ",")); System.out.println(isSeriateNumber(str4, ",")); System.out.println(isSeriateNumber(str5, ","));}private static boolean isSeriateNumber(String strNum, String separator) { String[] strNums = strNum.split(separator); int[] nums = new int[strNums.length]; for (int i = 0; i < strNums.length; i++) { nums[i] = Integer.parseInt(strNums[i]); } Arrays.sort(nums); for (int i = 0; i < nums.length - 1; i++) { if (nums[i + 1] - nums[i] != 1) { return false; } } return true;} package com.xiongliang.part1;public class First { /** * @param args */ public String[] string1; public int i; public void getSomeStr(String[] string1){ int i=string1.length; for(int n=1;n<i;n++){ for(int m=0;m<n;m++){ int a=Integer.parseInt(string1[m]); int b=Integer.parseInt(string1[n]); if(a>b){ String str=string1[m]; string1[m]=string1[n]; string1[n]=str; } } } } public boolean getResult(String[] string1){ Boolean f = null; for(int j=0;j<=i;j++){ int c=Integer.parseInt(string1[j]); int d=Integer.parseInt(string1[j+1]); if((d-c)>1){ f=false; } else f=true; } return f; } public static void main(String[] args) { String[]str=new String[]{"1","3","5","6","8","7","9","2","4","10","10"}; First f1=new First(); f1.getSomeStr(str); if(f1.getResult(str)){ System.out.println("是连续的"); } else System.out.println("不是连续的"); }} 求解救 java应用程序如何播放音乐??请赐教!! 如何读取文件夹中的文件夹名 byte-->Hex 救命 这么简单的代码 运行错误,哪里错了 编译lucene包的问题? 如何实现把多种不同类形的文件保存到SqlServer2000的image字段 一个画坐标轴的程序,要改进,请大家帮忙,谢谢! 请corba高手帮忙 各位wincvs在什么地方下载,最好能是中文版的,100分等候 线程的run()方法执行完毕后该如何重新start()? 初学者的问题
String str1 = "1,2,3,4,5,6,7,8,10";
String str2 = "1,2,3,4,5,6,7,8,9,10";
System.out.println(isSeriateNumber(str1, ","));
System.out.println(isSeriateNumber(str2, ","));
}// 假定序列是数字顺序是升序的
// 只要获得第一值和最后一个值,通过其数值数计算一下,就可以得出是否是连的
private static boolean isSeriateNumber(String strNum, String separator) {
String[] strNums = strNum.split(separator);
int start = Integer.parseInt(strNums[0]);
int end = Integer.parseInt(strNums[strNums.length-1]);
if(start + strNums.length - 1 == end){
return true;
}else{
return false;
}
}
{
public static void main(String[] args) {
String str1 = "1,2,3,4,9,5,6,7,8,10"; /////这里把9加到了4后面
String str2 = "1,2,3,4,5,6,7,8,9,10";
System.out.println(isSeriateNumber(str1, ","));
System.out.println(isSeriateNumber(str2, ","));
}// 假定序列是数字顺序是升序的
// 只要获得第一值和最后一个值,通过其数值数计算一下,就可以得出是否是连的
private static boolean isSeriateNumber(String strNum, String separator) {
String[] strNums = strNum.split(separator);
int start = Integer.parseInt(strNums[0]);
int end = Integer.parseInt(strNums[strNums.length - 1]);
if (start + strNums.length - 1 == end) {
return true;
} else {
return false;
}
}}
String str1 = "1,2,3,4,5,6,7,8,10";
String str2 = "2,3,4,5,6,7,8,9,10";
String str3 = "2,3,4,9,5,6,7,8,10";
System.out.println(isSeriateNumber(str1, ","));
System.out.println(isSeriateNumber(str2, ","));
System.out.println(isSeriateNumber(str3, ","));
}private static boolean isSeriateNumber(String strNum, String separator) {
String[] strNums = strNum.split(separator);
int[] nums = new int[strNums.length];
for(int i=0; i<strNums.length; i++) {
nums[i] = Integer.parseInt(strNums[i]);
}
Arrays.sort(nums);
if(nums[0] + nums.length - 1 == nums[nums.length-1]){
return true;
}else{
return false;
}
}
====================
我感觉他的算法好像有问题 ,但好像不是你说的那个问题人家前提条件是 升序的 你的 4和9 调换位置 那还是升序的吗?如果里面有重复的数字 那怎么办? 比如 有两个10 而没有9??
String str1 = "1,2,3,4,5,6,7,8,10";
String str2 = "2,3,4,5,6,7,8,9,10";
String str3 = "2,3,4,5,6,7,9,8,10";
String str4 = "2,4,4,5,6,7,9,8,10";
String str5 = "2,3,4,5,6,7,8,10,10";
System.out.println(isSeriateNumber(str1, ","));
System.out.println(isSeriateNumber(str2, ","));
System.out.println(isSeriateNumber(str3, ","));
System.out.println(isSeriateNumber(str4, ","));
System.out.println(isSeriateNumber(str5, ","));
}private static boolean isSeriateNumber(String strNum, String separator) {
String[] strNums = strNum.split(separator);
int[] nums = new int[strNums.length];
for (int i = 0; i < strNums.length; i++) {
nums[i] = Integer.parseInt(strNums[i]);
}
Arrays.sort(nums);
for (int i = 0; i < nums.length - 1; i++) {
if (nums[i + 1] - nums[i] != 1) {
return false;
}
}
return true;
}
* @param args
*/ public String[] string1;
public int i;
public void getSomeStr(String[] string1){
int i=string1.length;
for(int n=1;n<i;n++){
for(int m=0;m<n;m++){
int a=Integer.parseInt(string1[m]);
int b=Integer.parseInt(string1[n]);
if(a>b){
String str=string1[m];
string1[m]=string1[n];
string1[n]=str;
}
}
}
}
public boolean getResult(String[] string1){
Boolean f = null;
for(int j=0;j<=i;j++){
int c=Integer.parseInt(string1[j]);
int d=Integer.parseInt(string1[j+1]);
if((d-c)>1){
f=false;
}
else
f=true;
}
return f;
}
public static void main(String[] args) {
String[]str=new String[]{"1","3","5","6","8","7","9","2","4","10","10"};
First f1=new First();
f1.getSomeStr(str);
if(f1.getResult(str)){
System.out.println("是连续的");
}
else System.out.println("不是连续的");
}}