无法等待输入 13行后,插入一句:input.nextLine();13行取得输入的整数后,缓冲区里还有"\r\n",上面的语句就释放掉了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.util.Scanner;public class Insert_Test { private static char[]text=new char[10]; public static void main(String[] args){ Scanner input=new Scanner(System.in); input.useDelimiter("\r\n"); System.out.print("Please enter a string."); String s=input.nextLine(); text=s.toCharArray(); System.out.print("Please enter insert position."); int n=input.nextInt(); if(n>=s.length()){ System.out.println("插入位置大于等于原本string长度,将在原文最后添加"); n=s.length()+1; } input.nextLine(); System.out.print("Please enter insert text."); String insert_text=input.nextLine(); System.out.print("Do you want inset(1 or 0)?"); int m=input.nextInt(); System.out.println("原来的是:"+s); System.out.println("添加位置:"+n); System.out.println("加入内容:"+insert_text); if (m==1){ insert(insert_text,n); } System.out.print("结果为:"); for(int i=0;i<text.length;i++){ System.out.print(text[i]); } } public static void insert(String insert_text,int startposition){ int start_point=startposition; char[] insert_part=insert_text.toCharArray(); char[] temp_text=new char[text.length+insert_part.length]; for(int i=0;i<start_point-1;i++){ temp_text[i]=text[i]; } for(int i=0,n=start_point-1;i<insert_part.length;i++,n++){ temp_text[n]=insert_part[i]; } for(int i=start_point-1+insert_part.length,n=start_point-1;n<text.length;i++,n++){ temp_text[i]=text[n]; } text=temp_text; }}试试这个 你声明的那个text没什么用,还不如在main函数里面等sanner输入了哪,改成这样:import java.util.Scanner;public class Insert_Test { public static void main(String[] args){ Scanner input=new Scanner(System.in); input.useDelimiter("\r\n"); System.out.print("Please enter a string."); String s=input.nextLine(); char[] text=s.toCharArray(); System.out.print("Please enter insert position."); int n=input.nextInt(); if(n>=s.length()){ System.out.println("插入位置大于等于原本string长度,将在原文最后添加"); n=s.length()+1; } input.nextLine(); System.out.print("Please enter insert text."); String insert_text=input.nextLine(); System.out.print("Do you want inset(1 or 0)?"); int m=input.nextInt(); System.out.println("原来的是:"+s); System.out.println("添加位置:"+n); System.out.println("加入内容:"+insert_text); if (m==1){ text=insert(text,insert_text,n); } System.out.print("结果为:"); for(int i=0;i<text.length;i++){ System.out.print(text[i]); } } public static char[] insert(char[] text,String insert_text,int startposition){ int start_point=startposition; char[] insert_part=insert_text.toCharArray(); char[] temp_text=new char[text.length+insert_part.length]; for(int i=0;i<start_point-1;i++){ temp_text[i]=text[i]; } for(int i=0,n=start_point-1;i<insert_part.length;i++,n++){ temp_text[n]=insert_part[i]; } for(int i=start_point-1+insert_part.length,n=start_point-1;n<text.length;i++,n++){ temp_text[i]=text[n]; } return temp_text; }} 谢谢啦,还有一个问题,我想要插入一些字符在原有字符里,现在发现第46行和第20行编译无法通过,能帮我看看看么。谢谢编译没发现问题,运行时报数组越界错。4楼的建议不错。text开始定义没有意义。另外,System类有个arraycopy 方法,可以省去循环。 public static char[] insertBySysytemArrayCopy(char[] text,String insert_text,int startposition){ int start_point = startposition; char[] insert_part = insert_text.toCharArray(); char[] temp_text = new char[text.length+insert_part.length]; System.arraycopy(text, 0, temp_text, 0, start_point -1); System.arraycopy(insert_part, 0, temp_text, start_point -1, insert_part.length); System.arraycopy(text, start_point - 1, temp_text, insert_part.length + start_point -1, text.length - start_point + 1); return temp_text; } 前辈,请帮个忙写一个设置界面背景的源代码,谢谢 简单的问题一个 问个java gui的问题 frame刷新 请问使用jni如何把mfc做的界面嵌入到awt或swing里 请问怎样才能将一个Date对象的小时、分钟、秒去掉,得到一个只有日期的Date对象呢?顶者有分啊。 作业题 达人指教一下 JTextField如何只让其输入4个字符 jdbc的简单问题,送分啦 讨论:移动图像时,如何避免图像闪烁?(附代码) 怎样在小程序里做个表格? 关于键盘监听自动重复问题 关于实例化对象的区别
import java.util.Scanner;public class Insert_Test {
private static char[]text=new char[10];
public static void main(String[] args){
Scanner input=new Scanner(System.in);
input.useDelimiter("\r\n");
System.out.print("Please enter a string.");
String s=input.nextLine();
text=s.toCharArray();
System.out.print("Please enter insert position.");
int n=input.nextInt();
if(n>=s.length()){
System.out.println("插入位置大于等于原本string长度,将在原文最后添加");
n=s.length()+1;
}
input.nextLine();
System.out.print("Please enter insert text.");
String insert_text=input.nextLine();
System.out.print("Do you want inset(1 or 0)?");
int m=input.nextInt();
System.out.println("原来的是:"+s);
System.out.println("添加位置:"+n);
System.out.println("加入内容:"+insert_text);
if (m==1){
insert(insert_text,n);
}
System.out.print("结果为:");
for(int i=0;i<text.length;i++){
System.out.print(text[i]);
}
}
public static void insert(String insert_text,int startposition){
int start_point=startposition;
char[] insert_part=insert_text.toCharArray();
char[] temp_text=new char[text.length+insert_part.length];
for(int i=0;i<start_point-1;i++){
temp_text[i]=text[i];
} for(int i=0,n=start_point-1;i<insert_part.length;i++,n++){
temp_text[n]=insert_part[i];
}
for(int i=start_point-1+insert_part.length,n=start_point-1;n<text.length;i++,n++){
temp_text[i]=text[n];
}
text=temp_text;
}
}试试这个
import java.util.Scanner;public class Insert_Test {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
input.useDelimiter("\r\n");
System.out.print("Please enter a string.");
String s=input.nextLine();
char[] text=s.toCharArray();
System.out.print("Please enter insert position.");
int n=input.nextInt();
if(n>=s.length()){
System.out.println("插入位置大于等于原本string长度,将在原文最后添加");
n=s.length()+1;
}
input.nextLine();
System.out.print("Please enter insert text.");
String insert_text=input.nextLine();
System.out.print("Do you want inset(1 or 0)?");
int m=input.nextInt();
System.out.println("原来的是:"+s);
System.out.println("添加位置:"+n);
System.out.println("加入内容:"+insert_text);
if (m==1){
text=insert(text,insert_text,n);
}
System.out.print("结果为:");
for(int i=0;i<text.length;i++){
System.out.print(text[i]);
}
}
public static char[] insert(char[] text,String insert_text,int startposition){
int start_point=startposition;
char[] insert_part=insert_text.toCharArray();
char[] temp_text=new char[text.length+insert_part.length];
for(int i=0;i<start_point-1;i++){
temp_text[i]=text[i];
} for(int i=0,n=start_point-1;i<insert_part.length;i++,n++){
temp_text[n]=insert_part[i];
}
for(int i=start_point-1+insert_part.length,n=start_point-1;n<text.length;i++,n++){
temp_text[i]=text[n];
}
return temp_text;
}
}
编译没发现问题,运行时报数组越界错。
4楼的建议不错。text开始定义没有意义。
另外,System类有个arraycopy 方法,可以省去循环。
public static char[] insertBySysytemArrayCopy(char[] text,String insert_text,int startposition){
int start_point = startposition;
char[] insert_part = insert_text.toCharArray();
char[] temp_text = new char[text.length+insert_part.length];
System.arraycopy(text, 0, temp_text, 0, start_point -1);
System.arraycopy(insert_part, 0, temp_text, start_point -1, insert_part.length);
System.arraycopy(text, start_point - 1, temp_text, insert_part.length + start_point -1, text.length - start_point + 1);
return temp_text;
}