1.想通过java输入一个长度固定的字符串,如输入一个长度为9的字符串,应该如何实现呢?
2.java中如何实现一个数组长度的扩充或者缩短呢?
希望大牛们能够解答,感激不尽!!

解决方案 »

  1.   

    可以用 Array.copy(a,a.length+1) 扩容
      

  2.   

    1.String的本质是一个char字符数组   定义一个定长的char数组就OK了
    2.可以先建一个大的/小的数组   再把原数组元素copy就OK了
      

  3.   

    你可以看下arraylist 的源码,看看数组扩充的时候该怎么搞
      

  4.   

    输入限制可以通过正则表达式匹配实现。数组扩容,可以使用Arrays.copyOf实现。示例:
    //从控制台输入固定长度的文本
    public static String readFixedLengthString(int length){
    Scanner scan = new Scanner(System.in);
    Pattern pattern = Pattern.compile("[\\u0000-\\uffff]{" + length + "}");  //长度限制
    String result = scan.next(pattern);
    scan.close();
    return result;
    }

    //增加数组长度
    public static <T> T[] grow(T[] original,int length){
    return Arrays.copyOf(original, original.length + length);
    }

    //测试
    public static void main(String[] args){
    //示例:输入固定长度的字符串
    try {
    String str = readFixedLengthString(5);
    System.out.println(str);
    } catch (InputMismatchException e) {
    System.out.println("输入格式不正确,请输入长度为5的字符串");
    }
    //示例:数组扩容
    Byte[] arr = new Byte[1024];
    System.out.println("old length:" + arr.length);
    arr = grow(arr, 1024);
    System.out.println("new length:" + arr.length);
    }
      

  5.   

    先上代码:package com.test;import java.util.Arrays;
    import java.util.Scanner;public class MyTest {
    static Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
    answer1();
    answer2();
    scanner.close();
    } public static void answer1(){
    System.out.println("【第 1 题】");
    String s = null;
    do {
    System.out.print("请输入长度为9的字符串:");
    s =scanner.next();
    System.out.println(String.format("你输入的字符串为[%s],长度为%s", s,s.length()));
    } while (s != null && s.length()!=9);
    System.out.println("总结:只要让输入的字符串的 length()等于9就可以了 \n");
    } public static void answer2(){
    System.out.println("【第 2 题】");
    int arr1[] = {1,2,3,4,5};
    System.out.println(String.format("我是arr1数组:%s,我的长度是%s",Arrays.toString(arr1),arr1.length));
    System.out.print("请输入现在变化后的数组大小:");
    int arr2[] = Arrays.copyOf(arr1,scanner.nextInt());
    System.out.println(String.format("我是arr2数组:%s,我的长度是%s",Arrays.toString(arr2),arr2.length));
    System.out.println("总结:数组扩展,用 Arrays.copy(原数组,扩展量) 函数即可。");
    }
    }
    再上运行结果: