这是一个比较danteng的问题,闲来无聊刚开始学习java想看看如何在java上实现ctrl+z结束输入,百度发现居然没有一个答案,于是自己调试发现在Scanner类键入ctrl+z时会抛出NoSuchElementException异常,于是用catch捕获改异常return就行。
这是一题用改方法oj的题目:
1014:Checking order
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
- 输入长度为5的数字串,检查是否是按从小到大的顺序排列,如果是,输出Yes;否则,输出No,并输出从小到大排序后的结果。 输入
- 长度为5的一串数字; 输出
- 判断结果及排序后的结果。 样例输入
-
1 3 5 7 9 5 3 44 7 3 1 1 2 2 3
样例输出
-
Yes No 3 3 5 7 44 Yes
提示
-
1.测试数据很多组,采用如下的方式进行输入,每输入一组进行判断并输出,可以参考下面的模版:
int a[5];
while(cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4])
{
…
…
if (SORTED) // 输入数串已排好序
cout<<”Yes”<<endl;
else
//输出No,并输出排序后的结果,注意换行!
}
2.注意ACM题目的特点,不要输出额外的信息。 -
import java.util.Arrays; import java.util.NoSuchElementException; import java.util.Scanner; public class Main { /** * @param args */ public static void main(String[] args) { Scanner in = new Scanner(System.in); int oldnum[]=new int[5]; int newnum[]=new int[5]; int s; try{ while((s=in.nextInt())!=Integer.MAX_VALUE) { oldnum[0]=s; for(int i=1;i<5;i++) oldnum[i]=in.nextInt(); newnum=Arrays.copyOf(oldnum, oldnum.length); Arrays.sort(newnum); boolean flag=true; for(int i=0;i<5;i++) { if(newnum[i]!=oldnum[i]){ flag=false; break; } } if(flag) System.out.println("Yes"); else{ System.out.print("No "); for(int i:newnum) System.out.print(i+" "); System.out.println(); } } } catch(NoSuchElementException e){ return; } } }