我正在学习Java,我正在尝试输入程序。当我尝试使用实例向Scanner类输入整数和字符串时,出现错误,我无法输入字符串。当我首先输入字符串和后输入int时,它工作正常。当我使用不同的对象到Scanner类时,它也可以正常工作。但是,当我尝试首先输入int而下一个使用相同的实例将字符串输入Scanner类时,此方法的问题是什么?
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
//Scanner input2=new Scanner(System.in);
System.out.println("Enter your number :" );
int ip = input.nextInt();
System.out.println("Your Number is : " + ip);
System.out.println("Enter Your Name : ");
String name= input.nextLine();
System.out.println("Your Next is : " + name);
}
}
答案 0 :(得分:4)
nextInt()
不等待行尾 - 它默认等待令牌的结尾,这是任何空格。例如,如果您使用当前代码在第一行输入“27 Jon”,则ip
的值为Jon
,name
的值为input.nextLine()
。
如果你真的想要消费一个完整的行,你最好也可以调用Integer.parseInt
来输入数字,然后使用Scanner
来解析该行。除了其他任何内容,它代表您实际想要做的事情 - 输入两个行的文本,并将第一个解析为数字。
就个人而言,我不是{{1}}的忠实粉丝 - 它有很多像这样的陷阱。我确信它的使用方式完全符合设计师的预期,但要说出它的含义并不容易。
答案 1 :(得分:0)
这个工作正常,无论如何要保存IP地址,它必须是String。
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//Scanner input2=new Scanner(System.in);
System.out.println("Enter your number :");
int ip = input.nextInt();
System.out.println("Your Number is : " + ip);
System.out.println("Enter Your Name : ");
input.nextLine();
String name = input.nextLine();
System.out.println("Your Next is : " + name);
}
}