java中 输入字符串怎么给String数组赋值

import java.util.Scanner;
public class FileFilter{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String[] filenames=new String[2];
int i=0;
for(i=0;i<filenames.length;i++){
System.out.println("please input the string");
String text=scanner.next();
filenames[i]=text;}
System.out.println("output the filterfile:");
if(filenames[i].endsWith("jpg")){
System.out.println(filenames[i]);
}
}
}
这样做为什么不行呢

java中输入的字符串主要是使用scanner类来接收用户从键盘输入的数值,然后建立一个字符串数组来赋值,代码如下:

public class ceshi {
public static void main(String[] args){
String[] s = new String[3];//字符串数组
Scanner sc = new Scanner(System.in);接收用户从键盘输入的字符串
String str = sc.next();
s[0]=str;//输入的字符串str赋值给字符串数组的第一个
}
}

 è¿è¡Œç»“果如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-05
不是不能赋值,是最后
if(filenames[i].endsWith("jpg")){
System.out.println(filenames[i]);
这个时候的i=2,已经超过filenames数组的范围,所以报异常


import java.util.Scanner;

public class Ccc {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] filenames = new String[2];
for (int i = 0; i < filenames.length; i++) {
System.out.println("please input the string");
String text = scanner.next();
filenames[i] = text;
}
System.out.println("output the filterfile:");
for (int i = 0; i < filenames.length; i++) {
if (filenames[i].endsWith("jpg")) {
System.out.println(filenames[i]);
}
}
}

}本回答被提问者采纳
第2个回答  2011-04-30
import java.util.Scanner;
public class Test{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String[] filenames=new String[2];
int i=0;
for(i=0;i<filenames.length;i++){
System.out.println("please input the string");
String text=scanner.next();
filenames[i]=text;
System.out.println("output the filterfile:");
if(filenames[i].endsWith("jpg")){
System.out.println(filenames[i]);
}

}
}
}
第3个回答  2011-05-01
把string改为stringbuffer,再试
第4个回答  2011-04-30
因为你第一个for循环后i的值已经变成了2 即i=2
而你的数组的长度是2 下标最多是1 在下面的if判断里面你直接使用filenames[i] 此时的i=2 当然错误
java.lang.ArrayIndexOutOfBoundsException: 2