知识点:
- 测试数据有多组,while()循环输入条件加入 sc.hasNext()
hasnext()是什么意思?可以循环输入数据
- .输入数字后,若后面紧接着输入字符串,字符串会读取到遗留下的回车符,这时需要加.nextLine()吸取"\n"
int n=sc.nextInt(); sc.nextLine(); String s=sc.nextLine().trim();
有时候输入数字后不回车、按空格键接着输入字符串,.nextLine()吸不到回车不罢手,从而 出问题,这时候可以使用 .trim()—吸取字符串首尾空格
int n=sc.nextInt();
String s=sc.nextLine().trim();
- 读取数组长度使用 .length ,读取字符串串长使用 .length() 。
注意字符串数组易混,区别:字符串数组数组长度( .length ),与字符串数组中字符串长度(.length())。
题目:
先输入你要输入的字符串的个数。然后换行输入该组字符串。每个字符串以回车结束,每个字符串不多于一百个字符。
如果在输入过程中输入的一个字符串为“stop”,也结束输入。
然后将这输入的该组字符串按每个字符串的长度,由小到大排序,按排序结果输出字符串。如果存在多个字符串长度相同,则按照原始输入顺序输出。
输入格式:
字符串的个数,以及该组字符串。每个字符串以‘\n’结束。如果输入字符串为“stop”,也结束输入.
输出格式:
可能有多组测试数据,对于每组数据,
将输入的所有字符串按长度由小到大排序输出(如果有“stop”,不输出“stop”)。
输入样例:
4
faeruhyytrjh tjytj
hsrthts hjnshtgfhs
stop
3
htrskbns
bsartanjsf tyjndyt
nsr jj jtey
输出样例:
faeruhyytrjh tjytj
hsrthts hjnshtgfhs
htrskbns
nsr jj jtey
bsartanjsf tyjndyt
代码:
import java.util.Scanner;
public class Main{
public static void main(String [] args){
Scanner sc=new Scanner(System.in);
int n;
while(sc.hasNext()){
n= sc.nextInt();
sc.nextLine();//吸取遗留的回车符号
String [] arr=new String[n];
int cnt=n;
//cnt记录stop的下标,排序在0到cnt范围内
for(int i=0;i<n;i++){
String k=sc.nextLine();
if(k.equals("stop")) {
cnt=i;
break;
}
else arr[i]=k;
}
//冒泡排序法排序
for(int i=0;i<cnt-1;i++){
for(int j=0;j<cnt-i-1;j++){
if(arr[j].length()>arr[j+1].length()){
String temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i<cnt;i++){
System.out.println(arr[i]);
}
}
}
}