import java.util.Arrays;
import java.util.Scanner;
public class Sort {
public static void main(String[] args) {
String temp = "";
String a ="";
String[] New;
Scanner keyboard = new Scanner(System.in);
//String s1 = new String(keyboard.nextLine());
System.out.println("Please write your elements.");
while(keyboard.hasNext()){
String currentString = keyboard.next();
if(currentString.equals(" ")){
System.out.println("Bye");
}
a += (currentString.charAt(0) + "").toUpperCase() + currentString.substring(1).toLowerCase()+",";
}
a = a.substring(0, a.length()-1);
New = a.split(",");
System.out.println("Your elements are" + Arrays.toString(New) + ".");
for (int x = 1; x < New.length; x++) {
for (int y = 0; y < New.length - x; y++) {
if (New[y].compareTo(New[y + 1]) > 0) {
temp = New[y];
New[y] = New[y + 1];
New[y + 1] = temp;
}
}
} for(int i=0;i<New.length;i++){
System.out.println(New[i]);
}
/*System.out.println("In alphabethical order form is:");
System.out.println(Arrays.toString(New));*/
}
}
hasnext in infiniteloopı已经搜索stackowerflow但是答案无法修复错误。请帮助我。这是我的代码请写下你的元素。
ıfı按空格键并输入ı有问题。
再见 线程“main”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1 at java.lang.String.substring(Unknown Source) 在aa.Sort.main(Sort.java:38)
答案 0 :(得分:1)
一些事情。您应该使用hasNextLine()
和nextLine()
代替hasNext()
和next()
。
更改后,您的while循环永远不会结束,因为您只需打印Bye
并继续循环。打印break
后,添加Bye
语句。
if(currentString.equals(" ")){
System.out.println("Bye");
break;
}
答案 1 :(得分:0)
从控制台读取与读取文件不同。从Console读取程序需要一个Stream,它将等待进一步的输入。
从文件进行测试时(仍然使用System.in进行扫描程序,使用Java程序),hasNext()将在文件末尾返回false,因为无法再进行输入。