A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在做入学测试的第10题,编写了可以从键盘接收输入的数据,但是发现Eclipse控制台在接受输入数据后光标不跳到下一行,而是需要用鼠标点击到下一行。在DOS环境下运行则没有这个问题,求解,Eclipse需要怎么设置才能解决这个问题?
  1. import java.util.Scanner;

  2. /**
  3. * 10.编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表),
  4. * 例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,截取3个字节也要是"HM"而不要出现半个中文
  5. */
  6. public class Test10 {

  7.         /**
  8.          * @param args
  9.          */
  10.         public static String bSubstring(String s, int length) throws Exception {

  11.                 byte[] bytes = s.getBytes("Unicode");
  12.                 int n = 0; // 表示当前的字节数
  13.                 int i = 2; // 要截取的字节数,从第3个字节开始
  14.                 for (; i < bytes.length && n < length; i++) {

  15.                         // 奇数位置,如3、5、7等,为UCS2编码中两个字节的第二个字节

  16.                         if (i % 2 == 1) {
  17.                                 n++; // 在UCS2第二个字节时n加1
  18.                         } else {
  19.                                 // 当UCS2编码的第一个字节不等于0时,该UCS2字符为汉字,一个汉字算两个字节
  20.                                 if (bytes[i] != 0) {
  21.                                         n++;
  22.                                 }
  23.                         }
  24.                 }

  25.                 // 如果i为奇数时,处理成偶数

  26.                 if (i % 2 == 1) {
  27.                         // 该UCS2字符是汉字时,去掉这个截一半的汉字
  28.                         if (bytes[i - 1] != 0)
  29.                                 i = i - 1;
  30.                         // 该UCS2字符是字母或数字,则保留该字符
  31.                         else
  32.                                 i = i + 1;
  33.                 }

  34.                 return new String(bytes, 0, i, "Unicode");

  35.         }
  36.        
  37.         public static void main(String[] args) throws Exception {
  38.                
  39.                  Scanner scan = new Scanner(System.in);//从键盘接收输入数据
  40.                  System.out.println("请输入字符串:");
  41.                  String str = scan.next(); //取出接收的字符
  42.                  int i = 0;
  43.                  System.out.println("请输入截取字符的位置:");
  44.                  if(scan.hasNextInt()){//如果输入的是整数
  45.                          i = scan.nextInt();
  46.                          System.out.println(Test10.bSubstring(str, i));
  47.                  }else{
  48.                          System.out.println("输入的不是整数。");
  49.                  }
  50.                  
  51.         }

  52. }
复制代码



6 个回复

倒序浏览
你的意思是刚刚运行后控制台下面这样么?
(光标位置)请输入字符串:
我用的是Myeclipse如果是这样的话不用鼠标点,你输入英文和数字它自动就在下一行了,中文有时候不行但大部分也能自动下去..
回复 使用道具 举报
Eclipse控制台的光标是没有换行功能的,输入数据的时候只能自己一个一个慢慢移动光标。我以前专门百度过,现在还没有解决方法。
回复 使用道具 举报
刚才在写代码时我也发现了这个问题,不过,现在是2016年10月了,这个问题还没解决吗?
回复 使用道具 举报
居然都还没有解决啊
回复 使用道具 举报
2018年1月20日 17:22:47------------还未解决
回复 使用道具 举报
万合天宜 发表于 2015-2-8 14:54
Eclipse控制台的光标是没有换行功能的,输入数据的时候只能自己一个一个慢慢移动光标。我以前专门百度过, ...

shift+enter
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马