求问!!学习java过程中关于输入定长字符串和可扩充数组的问题 1.想通过java输入一个长度固定的字符串,如输入一个长度为9的字符串,应该如何实现呢?2.java中如何实现一个数组长度的扩充或者缩短呢?希望大牛们能够解答,感激不尽!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以用 Array.copy(a,a.length+1) 扩容 1.String的本质是一个char字符数组 定义一个定长的char数组就OK了2.可以先建一个大的/小的数组 再把原数组元素copy就OK了 你可以看下arraylist 的源码,看看数组扩充的时候该怎么搞 输入限制可以通过正则表达式匹配实现。数组扩容,可以使用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); } 先上代码: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(原数组,扩展量) 函数即可。"); }}再上运行结果: 一个小问题,高手帮忙解决,谢谢了!!!! java程序运行出错,各位高手帮我看看,快被这个搞疯了,我24小是等着 csv转数据库 我写的一个下载软件 SUN java教程的习题问题 多线程问题,高手请进,分数不限,请赐教!!!!! 这段代码为什么错???实在没分了 一道简单的面试题 请问这是什么原因 求证 java C/S通信问题 关于HashMap.toString转JSON的相关问题
2.可以先建一个大的/小的数组 再把原数组元素copy就OK了
//从控制台输入固定长度的文本
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);
}
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(原数组,扩展量) 函数即可。");
}
}
再上运行结果: