如果使用scan java时声明

时间:2017-11-28 21:24:35

标签: java java.util.scanner

我正在尝试阅读用户提供的行并将其打印出正确的内容。现在,当我输入朱利安时,它不会打印任何东西。

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();
    } 
}

2 个答案:

答案 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