java-我用string输入一串字符,取出最小值,程序没错,但有一些疑问

a394264450 2012-03-16 01:13:50
import java.io.*;
public class test2_111{
public static void main(String a[]){
String s="";
String min="";
boolean flag=true;
try{
BufferedReader in=
new BufferedReader(new InputStreamReader(System.in));
s=in.readLine();
String ss[]=s.split(""); //将字符串拆分在数组ss[]里
min=ss[1];
for(int i=1;i<=s.length();i++){
if(min.compareTo(ss[i])>0) //在java里char可以用‘<’ ‘>’ ‘=' 作比较,string不能
min=ss[i];
}

}
catch(IOException e){}
System.out.println(min);
}
}



以上代码运行出来就是我想要的效果,但是下面的这个代码,我只是将min=ss[1];改成了min=ss[0];,效果就完全不一样了,为什么会出现这样不同的结果?数组是从0开始的,小雪球说我用split取出的第一个字符不是我想要的第一个字符,为什么不是我想要的第一个字符?


import java.io.*;
public class test2_111{
public static void main(String[] args) {

String s="";
String min="";
try{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
s=in.readLine();
String ss[]=s.split(","); //将字符串拆分在数组ss[]里
min=ss[0];
for(int i=1;i<ss.length;i++){
if(min.compareTo(ss[i])>0) //在java里char可以用‘<’ ‘>’ ‘=' 作比较,string不能
min=ss[i];
}

}
catch(IOException e){}
System.out.println(min);
}

}
...全文
177 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nmyangym 2012-03-19
  • 打赏
  • 举报
回复
java 就认为字符串前面有个"",后面有个"",如果那句String ss[]=s.split(""); 改成
String ss[]=s.split("",-1); 那么假设输入abc,将得到ss[0]="",ss[1]="a",ss[2]="b",
ss[3]="c",ss[4]="" 这样5个数组。(后面还会多一个)。

直接回车也会得到一个长度为一的数组,ss[0]="";
这个可能就是java这样规定的吧。
a394264450 2012-03-19
  • 打赏
  • 举报
回复
为什么会出现这样的情况?
handylin 2012-03-16
  • 打赏
  • 举报
回复

String s = "abcdadfs";
String min = "";
String ss[] = s.split(""); // 将字符串拆分在数组ss[]里
for (int i = 0; i <=s.length(); i++)
System.out.println(ss[i]);

这里编译没报数组越界错误,证明通过split切分之后,s分成了9个元素,
ss[0]="";ss[1]到ss[8]分别对应abcdadfs
因此第二种方法ss[0]总是最小的,输出空,而第一种方法输出a

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧