java怎么用java.util.Scanner添加字符串保存到数组中?

写一个通讯录程序,实现动态添加用户,并可以输出所有排序后的用户。排序方式a~z,A~z。例如:any,Tom….。只能用数组、循环;多谢!下面是自己写的;但结果却是这样输... 写一个通讯录程序, 实现动态添加用户, 并可以输出所有排序后的用户。 排序方式a~z,A~z。 例如:any,Tom….。
只能用数组、循环;
多谢!下面是自己写的;但结果却是这样
输入两次时结果为[null,sss];
a[0]没有赋值进去;
Scanner s = new Scanner(System.in);
String t="0";
int i = 0;
String name ;
while(!(t.equals(-1))){
System.out.println("请输入姓名(结束请输入(-1)):");
String[]a=new String[i+1];
a[i] = s.next();
System.out.println(Arrays.toString(a));
i++;
}
String name = null;
Scanner s = new Scanner(System.in);
StringBuilder sb = new StringBuilder();

for (int i = 0;; i++) {
System.out.println("请输入姓名,返回请输入“-1”:");
name = s.next();
if (!(name.equals("-1"))) {
sb.append(name).append(",");
} else if (name.equals("-1"))
break;
}
String names[] = sb.toString().split(",");
Arrays.sort(names);
System.out.println(Arrays.toString(names));
展开
 我来答
至尊z馒头
2011-05-11 · TA获得超过114个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:105万
展开全部
呃..你每循环一次 就new一个数组出来,但i又在自加
所以结果就是 你无论输入几次 都会只有最后一个值.比如你输入5次,就是[空,空,空,空,X].
每次循环 new了之后 数组就是新的了 跟之前的不一样
放外面申明就行了.

刚接触java吧 ..看样子应该没学变长数组ArrayList.你应该是希望没增加一条信息,数组长度就增加一个,这个可以手动实现的,自己多考虑下,对你有好处.这里就没必要了
所以你在外面 申明一个定长的数组就行了 主要添加信息不要越界就ok
更多追问追答
追问
放在外面声明又无法确定数组长度
追答
跟你说说手动实现变长数组原理吧
1.你先声明一个定长数组array, 比如长度是5
2.定义一个字段size记录当前数组内添加了多少条目,每次添加信息进数组,你size相应改变 并判断是否大于或等于数组长度 array.length(这里初始值是5)
3.如果大于或等于数组长度了,就重新new一个定长数组tmpArray,长度大于之前的数组长度就好,再把array里的数据copy到tmpArray里
4.因为数组是引用数据类型,最后再让array指向tmpArray就ok
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式