做ACM练习题,用Java语言,一个问题困扰好久了:
    举个例子:输入一系列整数,整数的个数不固定:0 1 2 3 4   然后将所输入的整数求平方并逆序输出:16 9 4 1 0
    我的问题是,既然题目中没有给出限制条件来判断何时输入结束(OJ上输入时是文件输入,自然有结尾,但如果在控制台上输入就没有了),用(Scanner)hasNextInt()之类的函数判断也没用,那怎么输出正确结果呢?
    谢谢各位大虾了~~能解决的话分全给了,o(︶︿︶)o 唉~~
    (注:以前接到过使用特殊字符如'\n'或者空格,或者使用特殊数字如-1等来判断输入结束的答案,但由于题目输入形式已经固定,不像自己写软件之后要求客户输入什么来结束程序,自己不能另外加东西的,所以这些答案是不符合要求的)

解决方案 »

  1.   

    呵呵,我感觉楼主想多了吧?
    实现大体功能就行了吧,比如说将这些数放在运行时的参数放进去就行了.然后使用main方法里的String数组拿这些整数.
      

  2.   

    我用的是eclipse,在控制台中输入,回车换行的时候不会结束
    有时候输入的数据也需要换行,那样如果换行就结束的话也就不对了,呵呵,不过谢谢~~
      

  3.   

    呵呵 我也是搞ACM的
    LZ只要在WHILE判断里判断是否到文件结束 也就是用Scanner.hasNext方法 
    在循环体里收集输入
    然后再统一计算 最后再倒序输出就行了
    OJ的评判机制是先将通过一个文件内容作为输入(所以才有文件结尾) 
    然后把你的输出重定向到一个文件   
    用你的输出和标准输出(也就是用标准程序跑的输出)对比 最后得出你是否AC
    所以只要最后的输出对 不管什么时候输出的(也就是先于下一输入还是在所有输入之后) 都可以AC
      

  4.   

    似乎搞JAVA的 很少有搞过ACM的?
      

  5.   

    是吗?我没那么试过,之前当然都是自己能得出结果之后再提交的
    你是说只要程序正确,即使控制台里显示不了结果也能AC吗?我之前用Scanner.hasNext()之类的函数来判断感觉都没用,其他题能找找结束标志,但是像这类的题只有先收集了所有输入之后再输出其实现在也感觉Java做ACM题不是很方便,毕竟那些题要求的只是解决问题,求出正确结果就行,呵呵
      

  6.   

    不是显示不了也行= = 输入输出流的重定向 是OJ做的 你本地还是要显示出来的 只是和输入顺序没关系
    比如你说的这道题 你可以先把所有的输入 存到数组里 然后反向计算 一边计算一边输出 也可以反向计算然后把结果存在数组里 最后一器输出 只要输出的结果与标准输出文件一致就行
    JAVA有JAVA的优势 正式比赛JAVA可以获得3倍时间 还有大整数和高精度类库 直接导致这几年没有大整数和高精度问题了 原来正式比赛有时还需要手敲大整数的