在java中使用同一对象进行整数输入和字符串输入

在java中使用同一对象进行整数输入和字符串输入,java,Java,我是Java编程新手。我正在阅读有关Scanner类的内容,我决定编译一个简单的程序: package com.company; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner obj= new Scanner(System.in); Scanner obj2=new Scanner(System.in);

我是Java编程新手。我正在阅读有关Scanner类的内容,我决定编译一个简单的程序:

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner obj= new Scanner(System.in);
        Scanner obj2=new Scanner(System.in);
        int n=obj.nextInt();
        String s = obj.nextLine();
        System.out.println(n*2);
        System.out.println(s);
    }
}
通过使用对象obj,我只能读取整数输入,不允许读取字符串输入。为什么我们不能使用Scanner类的同一个对象来获取输入,因为对象的唯一用途是调用nextLine()之类的方法

但是如果我使用这个代码

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner obj= new Scanner(System.in);
        Scanner obj2=new Scanner(System.in);
        int n=obj.nextInt();
        String s = obj2.nextLine();
        System.out.println(n*2);
        System.out.println(s);
    }
}
使用不同的对象obj2表示string,obj表示integer,我得到了所需的输出。
任何帮助都将不胜感激

试试这个:字符串s=obj2.next()

为什么我不能使用同一个对象obj?@RitenBhagra你应该可以。。。摆脱Scanner obj2=新的Scanner(System.in)它不允许我接受stringNope的输入,仍然无法接受输入。请帮助:(请删除此答案。您的另一个答案似乎正确。这令人困惑。为什么您认为必须从该扫描仪中提取int?相反,只需读取字符串,然后查看“如果该输入是否为数字"通过尝试将其解析为整数。如果失败:输入不是一个数字,请使用字符串数据的代码路径。如果它传递:这是一个数字,请调用处理数字的任何程序。如果您想更具创造性,请编写一个字符串解析器,可以将一行文本拆分为可能是数字、文本、复杂信息等的部分。Java不是如果我不想让你在这里做任何事情,你就得发明轮子。为什么我不能用ObjectObj来读取整数输入和字符串输入。你可以?只需要使用,而不是,它做完全不同的事情。记住,验证你调用的函数是否真的做了你认为它做的事情总是很重要的。在这种情况下,这是非常重要的现在不是这样。你不明白我的意思,请运行我在问题中给出的两个程序,理解我想说的!@Idle\u注意你是个天才伙伴,非常感谢你的帮助!这也不能完全回答问题,因为没有迹象表明OP的代码为什么不起作用。@Taschi你能告诉我吗为什么我的第一个代码不起作用?@Mike'Pomax'Kamermans你能告诉我为什么我的第一个代码不起作用吗?我已经在评论中说过了:你没有读到
nextLine()
有什么作用,但是如果你读到了(我在评论中将你链接到了文档)你会意识到这不是用来获取字符串的函数。要获取字符串,你可以使用
next()
package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner obj= new Scanner(System.in);
        int n=obj.nextInt();
        String s = obj.next();
        System.out.println(n*2);
        System.out.println(s);

    }

}