在做入学测试的第10题,编写了可以从键盘接收输入的数据,但是发现Eclipse控制台在接受输入数据后光标不跳到下一行,而是需要用鼠标点击到下一行。在DOS环境下运行则没有这个问题,求解,Eclipse需要怎么设置才能解决这个问题?
- import java.util.Scanner;
- /**
- * 10.编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表),
- * 例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,截取3个字节也要是"HM"而不要出现半个中文
- */
- public class Test10 {
- /**
- * @param args
- */
- public static String bSubstring(String s, int length) throws Exception {
- byte[] bytes = s.getBytes("Unicode");
- int n = 0; // 表示当前的字节数
- int i = 2; // 要截取的字节数,从第3个字节开始
- for (; i < bytes.length && n < length; i++) {
- // 奇数位置,如3、5、7等,为UCS2编码中两个字节的第二个字节
- if (i % 2 == 1) {
- n++; // 在UCS2第二个字节时n加1
- } else {
- // 当UCS2编码的第一个字节不等于0时,该UCS2字符为汉字,一个汉字算两个字节
- if (bytes[i] != 0) {
- n++;
- }
- }
- }
- // 如果i为奇数时,处理成偶数
- if (i % 2 == 1) {
- // 该UCS2字符是汉字时,去掉这个截一半的汉字
- if (bytes[i - 1] != 0)
- i = i - 1;
- // 该UCS2字符是字母或数字,则保留该字符
- else
- i = i + 1;
- }
- return new String(bytes, 0, i, "Unicode");
- }
-
- public static void main(String[] args) throws Exception {
-
- Scanner scan = new Scanner(System.in);//从键盘接收输入数据
- System.out.println("请输入字符串:");
- String str = scan.next(); //取出接收的字符
- int i = 0;
- System.out.println("请输入截取字符的位置:");
- if(scan.hasNextInt()){//如果输入的是整数
- i = scan.nextInt();
- System.out.println(Test10.bSubstring(str, i));
- }else{
- System.out.println("输入的不是整数。");
- }
-
- }
- }
复制代码
|
|