java Scanner hasNext的问题

packagegather;//字符串排序importjava.util.Scanner;importjava.util.ArrayList;publicclassStr... package gather;

//字符串排序
import java.util.Scanner;
import java.util.ArrayList;

public class StringSort {

public static void main(String args[]){
Scanner in=new Scanner(System.in).useDelimiter("\\s");
ArrayList<String> list=new ArrayList<String>();

while(in.hasNext()){
list.add(in.next());
}

in.close();
String[] s=new String[list.size()];
list.toArray(s);

sort(s);
}

public static void sort(String[]str){
for(int i=0;i<str.length-1;i++){
int min=i;
for(int j=i+1;j<str.length;j++){
if(str[min].compareTo(str[j])>0) min=j;
}
String s=str[min];
str[min]=str[i];
str[i]=s;
}

for(String s:str)
System.out.print(s+" ");
}

}
这里的hasNext()是一个死循环,要ctrl+z才能让程序运行下去 有没办法让程序接受到回车就跳出 就是 输入多个字符串 用空格分开 接受到回车跳出 不好意思 悬赏很少
展开
 我来答
yugi111
推荐于2016-01-02 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
package zhidao;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
import java.util.ArrayList;

public class StringSort
{
public static void main ( String args[] )
{
Scanner in = new Scanner (System.in).useDelimiter ("\\s");
ArrayList<String> list = new ArrayList<String> ();
while (in.hasNext ("[\\s\\d]+"))
{
list.add (in.next ());
}
in.close ();
Collections.sort (list, new Comparator<String> ()
{
@Override
public int compare ( String o1, String o2 )
{
int first = Integer.parseInt (o1);
int second = Integer.parseInt (o2);
if (first > second)
{
return 1;
}
else if (first < second)
{
return -1;
}
else
{
return 0;
}
}
});
System.out.println (list);
}
}
更多追问追答
追问

你好,谢谢 

结果是[]

追答
while (in.hasNext ("[\\s\\w]+"))
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式