我试图将String转换为List。我通过用户输入获取字符串,但每当我运行我的代码时,它都会给我这个:
输入一个数字:java.util.Scanner [delimiters = \ p {javaWhitespace} +] [position = 0] [match valid = false] [need input = false] [source closed = false] [skipped = false] [group separator = \,] [decimal separator =。] [positive prefix =] [negative prefix = \ Q- \ E] [positive suffix =] [negative suffix =] [NaN string = \Q�\ E] [infinity字符串= \Q∞\ E]
这是我的代码
public class ch3_15 {
public static void main(String[] args) {
int compNum, user_hund, user_ten, user_one, comp_hund, comp_ten, comp_one;
String s;
//user input
System.out.print("Enter a number: ");
Scanner input1 = new Scanner(System.in);
s = input1.toString();
//generating random number
compNum = (int) Math.random() * 1000;
System.out.println(s);
//finding the hundreds, tens, and ones place of the user number
List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));
}
}
答案 0 :(得分:2)
这不是错误。这是您使用
后的预期行为Scanner input1 = new Scanner(System.in);
s = input1.toString();
...
System.out.println(s);
和toString()
返回表示调用此方法的对象的String(在本例中为Scanner的实例)。
如果您想使用该扫描仪读取用户的行,您应该写
s = input1.nextLine();
// ^^^^^^^^
答案 1 :(得分:1)
您的问题是您没有从控制台读取下一个字符串,而是将扫描程序转换为字符串,然后打印。
您要使用的是v1 = document.getElementById('double').value;
while (v1 < 10) {
v1++;
now = new Date().getTime();
while(new Date().getTime() < now + 1000) {
document.getElementById('inputArea').value = v1;
}
}
,而不是Scanner.nextLine()
。
此外,这不是运行时错误,而只是错误的输出。
答案 2 :(得分:0)
您应该使用scanner.nextLine()
来读取使用输入的下一行。
您当前的代码正在打印扫描程序对象的toString()
方法,这不是运行时错误,而是预期的行为。
//user input
System.out.print("Enter a number: ");
Scanner input1 = new Scanner(System.in);
s = input1.nextLine();
答案 3 :(得分:0)
你没有从目前的路线前进;在这种情况下使用的方法是来自Scanner类的nextLine();所以代码就像:
System.out.print("Enter a number: ");
Scanner input1 = new Scanner(System.in);
s = input1.nextLine();
String aux = s.toString(); // To return the string representation from the sc
来自Java API 7的nextLine()方法=&gt;此方法返回当前行的其余部分,不包括末尾的任何行分隔符。该位置设置为下一行的开头。** /