我正在尝试阅读用户提供的行并将其打印出正确的内容。现在,当我输入朱利安时,它不会打印任何东西。
import java.util.Scanner;
public class fantasyFootball {
public static void main(String[ ] args) {
Scanner reader = new Scanner(System.in);
System.out.println("Enter a name: ");
String n = reader.toString();
if("Julian".equals(n)){
System.out.println("Win and Win: You go to the Playoffs");
System.out.println("Lose and Win: ");
System.out.println("Lose and Win: ");
System.out.println("Lose and Lose: ");
}
reader.close();
}
}
答案 0 :(得分:5)
使用toString()
无法从Scanner
获得任何输入。你可能想要使用这样的东西:
String n = reader.nextLine();
答案 1 :(得分:0)
String n = reader.toString();
- 此行导致问题。
未提供方法.toString()
来帮助您从Scanner
获取输入。而不是那样,你应该使用String n = reader.nextLine()
- 它从标准输入设备给出的输入读取一行(我猜它是你的例子中的键盘)或者从另一个指定的设备读取。
提供方法.toString()
为您提供另一种可能性。这就是Java API文档所说的内容:
“。toString()返回对象的字符串表示。通常,toString方法返回一个”文本表示“此对象的字符串。结果应该是一个简洁但信息丰富的表示,很容易要阅读的人。建议所有子类都覆盖此方法。“
在Java中创建的每个类都扩展了Object类(包含方法toString()
)。因此,对于您自己创建的对象的实例,可以调用方法toString()。有时您可能对使用该方法给出的信息不满意(默认情况下,您通常只获取特定对象的refence指向的内存中的地址),因此您可以在类中简单地覆盖此方法。有一个简单的例子,你可以如何实现它,为你打印更有用的信息:
class MyClass {
Integer i = 55;
public String toString() {
return "i stored in MyClass: " + i;
}
}
public class Test {
public static void main(String[ ] args) {
MyClass obj = new MyClass();
System.out.println(obj);
}
}
// That code gives a following output:
// i stored in MyClass: 55