问题简单,请看注释。
- Java code
import java.util.*;public class Test2 { private int a; private long b; private float c; private double d; private String e; private String scanner; Test2(String s){ scanner = s; } public static void main(String[] args){ Test2 test2 = new Test2("myString\n10\n20\n30.123\n" + "40.123\nMyString"); Scanner sc = new Scanner(test2.scanner); test2.e = sc.nextLine();//System.out.println(test2.e + ""); test2.a = sc.nextInt(); test2.b = sc.nextLong(); test2.c = sc.nextFloat(); test2.d = sc.nextDouble(); test2.e = sc.next(); //如果这换成 sc.nextLine()的话将什么都没有 这是为什么呢? System.out.println("a = " + test2.a + ", b = " + test2.b + ", c = " + test2.c + ", d = " + test2.d + ", e = " + test2.e + "."); }}
------解决方案--------------------
第一个问题不明白;
第二个问题:This method returns the rest of the current line, excluding any line separator at the end. The position is set to the beginning of the next line.你在MyString后面加上\n看有没有输出?
------解决方案--------------------
确实不明白,难道是Java中的bug,期望达人解释一下。
------解决方案--------------------
是不是\n的影响
再执行一次nextLine()就ok了。
不很了解正则表达式,不深入分析了。
------解决方案--------------------
每次nextXXX方法都是读取数据XXX\n,最后一个没有\n,所以说问题出在\n上
------解决方案--------------------
学习
个人看法nextLine()方法读取的是一个文本行
文本行的结束标志是\n
最后一个没有\n所以方法将找不到文本行
------解决方案--------------------
楼上说的没错,nextLine是找换行符的
你的字符串最后没有换行符,所以就找不到
在字符串最好加个“\n”就可以使用nextLine()了
------解决方案--------------------