A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邱成 中级黑马   /  2012-7-16 01:08  /  1987 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我定义了一个students【】【】的二维数组,里面放String【】的一维数组,
Scanner s1 = new Scanner(System.in);//从键盘输入
String str1 = s1.next();
Scanner s2 = new Scanner(System.in);
String str2 = s2.next();
Scanner s3 = new Scanner(System.in);
String str3 = s3.next();
Scanner s4 = new Scanner(System.in);
String str4 = s4.next();
我将自己输入的数据放入String中,
String【】string =new String【】{str1,str2,str3,str4};将输入的值赋给一位数组。
再将其放进二维数组中。
Students【m】= string;
可是为什么取出二维数组我元素的值都是null,我不是已经从外面输入了吗????

评分

参与人数 1黑马币 +17 收起 理由
oracleserver + 17 很给力!

查看全部评分

5 个回复

倒序浏览
本帖最后由 杨_扬 于 2012-7-16 02:14 编辑

从你上面写的代码看不出什么问题,我不知道你用什么写的代码,我估计你有可能是没有对students这个二维数组初始化吧,还是怎么的就不知道了,按说没初始化是会报错的,下次再提问题最好能贴出完整的代码
我按照你说的,写了一个程序,不知道是不是你想要的,你对比一下吧
这个程序就是从键盘输入4个字符串,然后存入一个String的数组,然后再将这个数组存入String的二维数组,最后再把这四个字符串打印出来
  1. import java.util.Scanner;
  2. public class StringArray {
  3.         public static void main(String[] args) {        
  4.                 String[][] students = new String[1][];
  5.                 Scanner s1 = new Scanner(System.in);
  6.                 String str1 = s1.next();
  7.                 Scanner s2 = new Scanner(System.in);
  8.                 String str2 = s1.next();
  9.                 Scanner s3 = new Scanner(System.in);
  10.                 String str3 = s1.next();
  11.                 Scanner s4 = new Scanner(System.in);
  12.                 String str4 = s1.next();
  13.                 String[] string = new String[]{str1, str2,str3,str4};
  14.                 students[0] = string;
  15.                 for (String strArray[]:students){
  16.                         for (String str:strArray){
  17.                                 System.out.println(str);
  18.                         }
  19.                 }
  20.         }
  21. }
复制代码
回复 使用道具 举报
String【】string =new String【】{str1,str2,str3,str4};将输入的值赋给一位数组。
Students【m】= string;
你这地方不对。

new String 会开辟一块新的堆内存,你这句new String【】{str1,str2,str3,str4} 会放在新的堆内存中,不会放在你String【】string 这个string中,所以这地方的string里面为null
你再把它指向传递给Students[]数组,所以students[]数组也为空。你可以改成这样 String[] string = {str1,str2,str3,str4} 。
回复 使用道具 举报
String【】string = {str1,str2,str3,str4};是你的那个写法错了,还有只要声明一个Scanner就行了
回复 使用道具 举报
Scanner s1 = new Scanner(System.in);//从键盘输入
String str1 = s1.next();
Scanner s2 = new Scanner(System.in);
String str2 = s2.next();
Scanner s3 = new Scanner(System.in);
String str3 = s3.next();
Scanner s4 = new Scanner(System.in);
String str4 = s4.next();
我将自己输入的数据放入String中,
String【】string =new String【】{str1,str2,str3,str4};将输入的值赋给一位数组。
再将其放进二维数组中。 ------二维数组是两个[][]吧,你下面声明的是一个一维数组额{:soso_e141:}
Students【m】= string;----------------这个地方有问题,你放入Students【m】数组中的是一维数组String【】在内存中的哈希值;,并没有把一维数组中的每一项字符串放入Students【m】中

你这时取当然娶不到咯。

建议楼主循环String[]数组中的每一项,然后分别赋值给Students【m】

然后再取就没有问题了
回复 使用道具 举报
首先键盘输入Scannner input=new Scanner(System.in)只需要写一次,另外既然是放进一个二维数组中,就应该是这样写吧students[m][0]=string;即将一维数组string赋给有m+1 个一维数组的第1个一维数组中,说的有点绕,希望能帮到你
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马