一个java编程题目,大家帮帮忙 字符串str="2,3,4,5,6,7,8,9,11,13,14" 变为"2-9,11,13-14" 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class Test { public static void main(String[] args) { String str = new String( "1,2,3,4,5,6,7,8,9,11,13,14,1000,1001,1002,1003"); String[] s = str.split(","); int[] num = new int[s.length]; String result = ""; for (int i = 0; i < s.length; i++) { num[i] = Integer.parseInt(s[i]); } for (int i = 0; i < num.length; i++) { if (i == 0) { result = "" + num[i]; } else if (i == num.length - 1) { if (num[i] - num[i - 1] == 1) { result = result + "-" + num[i]; } else { result = result + "," + num[i]; } } else { if ((num[i] - num[i - 1] == 1) && (num[i + 1] - num[i] == 1)) { continue; } if ((num[i] - num[i - 1] == 1) && (num[i + 1] - num[i] != 1)) { result = result + "-" + num[i]; } if ((num[i] - num[i - 1] != 1)) { result = result + "," + num[i]; } } } System.out.println(result); }} class Test{ public static void main(String [] args){ String str="2,3,4,5,6,7,8,9,11,13,14"; String [] str1=str.split(","); int[] num = new int[str1.length]; for (int i = 0; i < str1.length; i++) { num[i] = Integer.parseInt(str1[i]); } int head=num[0]; int temp=head; int tail=head; for(int i=0;i<str1.length;i++){ //如果连续的话 if(temp==Integer.valueOf(num[i])){ temp++; tail=Integer.valueOf(num[i]); } //相反重新赋值 else{ System.out.println(head+","+tail); head=num[i]; tail=head; temp=head+1; } } //输出最后的元素 System.out.print(head+","+tail); }}为了程序更好理解,没有按特定的格式,可以自己修改一下加上个格式 String str = "2,3,4,5,6,7,8,9,11,13,14";str = "2-9,11,13-14";搞定 //字符串str="2,3,4,5,6,7,8,9,11,13,14"//变为"2-9,11,13-14"public class Test { private String str = new String("2,3,4,5,6,7,8,9,11,13,14"); private String num[]; public void show() { num = str.split(","); //转换成字符数组 int number[] = new int[num.length]; //声明一个整形数组 for (int i = 0; i < num.length; i++) { number[i] = Integer.parseInt(num[i]); //把字符串的内容赋值给整形数组 } String result = ""; for (int k = 0; k < number.length; k++) { if (k == 0) { //第一次循环直接把2存储在字符串result中 result = result + number[k]; } else if (k == number.length - 1) { //最后把14连接到字符串中 result = result + "-" + number[k]; } else { if (number[k] - number[k - 1] == 1 && number[k + 1] - number[k] == 1) { continue; } if ((number[k] - number[k - 1] == 1) && (number[k + 1] - number[k] != 1)) { result = result + "-" + number[k]; } if (number[k] - number[k - 1] != 1) { result = result + "," + number[k]; } } } System.out.println(result); } public static void main(String args[]) { Test shi = new Test(); shi.show(); }} 问个compaerTo方法的问题 hibernate级联查询 关于Tcp Socket的问题 由一张贴子想到的关于资源回收的问题 java的applet问题? 输入流输出流,搞不懂啊!!!! java能不能实现多文档(象VC++中)? 问一个JNI的问题? 为什么我的class运行不了? PreparedStatement接口中的setString方法为什么不能用来代替数据库的表名 JdbTextArea光标的问题 关于keyListener中keyTyped方法的一些问题
public static void main(String[] args) {
String str = new String(
"1,2,3,4,5,6,7,8,9,11,13,14,1000,1001,1002,1003");
String[] s = str.split(",");
int[] num = new int[s.length];
String result = "";
for (int i = 0; i < s.length; i++) {
num[i] = Integer.parseInt(s[i]);
}
for (int i = 0; i < num.length; i++) {
if (i == 0) {
result = "" + num[i];
} else if (i == num.length - 1) {
if (num[i] - num[i - 1] == 1) {
result = result + "-" + num[i];
} else {
result = result + "," + num[i];
}
} else {
if ((num[i] - num[i - 1] == 1) && (num[i + 1] - num[i] == 1)) {
continue;
}
if ((num[i] - num[i - 1] == 1) && (num[i + 1] - num[i] != 1)) {
result = result + "-" + num[i];
}
if ((num[i] - num[i - 1] != 1)) {
result = result + "," + num[i];
} } }
System.out.println(result);
}
}
public static void main(String [] args){
String str="2,3,4,5,6,7,8,9,11,13,14";
String [] str1=str.split(",");
int[] num = new int[str1.length];
for (int i = 0; i < str1.length; i++) {
num[i] = Integer.parseInt(str1[i]);
}
int head=num[0];
int temp=head;
int tail=head;
for(int i=0;i<str1.length;i++){
//如果连续的话
if(temp==Integer.valueOf(num[i])){
temp++;
tail=Integer.valueOf(num[i]);
}
//相反重新赋值
else{
System.out.println(head+","+tail);
head=num[i];
tail=head;
temp=head+1;
}
}
//输出最后的元素
System.out.print(head+","+tail);
}
}
为了程序更好理解,没有按特定的格式,可以自己修改一下加上个格式
str = "2-9,11,13-14";搞定
//变为"2-9,11,13-14"public class Test {
private String str = new String("2,3,4,5,6,7,8,9,11,13,14");
private String num[];
public void show() {
num = str.split(","); //转换成字符数组
int number[] = new int[num.length]; //声明一个整形数组
for (int i = 0; i < num.length; i++) {
number[i] = Integer.parseInt(num[i]); //把字符串的内容赋值给整形数组
}
String result = "";
for (int k = 0; k < number.length; k++) {
if (k == 0) { //第一次循环直接把2存储在字符串result中
result = result + number[k];
} else if (k == number.length - 1) { //最后把14连接到字符串中
result = result + "-" + number[k];
} else {
if (number[k] - number[k - 1] == 1 &&
number[k + 1] - number[k] == 1) {
continue;
}
if ((number[k] - number[k - 1] == 1) &&
(number[k + 1] - number[k] != 1)) {
result = result + "-" + number[k];
}
if (number[k] - number[k - 1] != 1) {
result = result + "," + number[k];
}
}
}
System.out.println(result);
} public static void main(String args[]) {
Test shi = new Test();
shi.show();
}
}