【java基础_问题】

握草 2017-11-17 11:31:47
1. StringBuilder( )类的insert( )方法,可以直接接受一个原始数据类型如boolean flg,结果返回的仍然是StringBuilder对象——但是问题是StringBuilder的构造器参数不是只有无参数和String两种吗?这里接受boolean肯定是隐式的转换为了String类型的数据了,但是这是怎么完成的呢,编译器怎么知道这里的boolean类型实际上是String类型?
2. 关于Scanner完成的读入工作,这里是我的一些代码:
private static Scanner sca;
private static Scanner inp;
static String bye;

public static void main(String[] args) {
sca = new Scanner(System.in);
System.out.print("Enter some integers (911 for break!): ");
ArrayList<Integer> al = new ArrayList<Integer>();
while (true) {
al.add(sca.nextInt());
System.out.println("Is that enough? (Y/N)");
bye = inp.nextLine();
if (bye.equals("Y") || bye.equals("y")) {
break;
}

}
}

看出来了,我想让用户输入ArrayList的元素,并在输入bye == "Y" || "y" 时break
问题出在斜体字,为什么这里只要搞了两个Scanner对象的话,会抛出这个异常:
Exception in thread "main" java.lang.NullPointerException
at incla001.Incla001.main(Incla001.java:18)

“空指针异常??为什么??”
————然而:
如果只有一个Scanner类的对象的话就没问题:
private static Scanner sca;
// private static Scanner inp;
static String bye;

public static void main(String[] args) {
sca = new Scanner(System.in);
System.out.print("Enter some integers:");
ArrayList<Integer> al = new ArrayList<Integer>();
while (true) {
al.add(sca.nextInt());
if (al.contains(911)) {
break;
}
}

(虽然这样ArrayList最后一个元素必须确定!!暂时没有找到解决办法!!)
====================
为什么这样的话就可以(只有一个Scanner类的对象)
是不是因为第一块代码Scanner对象对应的一个是int一个是String不一样的原因??

欢迎大家积极发言呀~
...全文
178 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
握草 2017-11-17
  • 打赏
  • 举报
回复
以上我只贴出了部分代码,应该不影响你们观看体验

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧