use*_*373 8 java user-input java.util.scanner
这个程序实际上如何工作......?
import java.util.Scanner;
class string
{
public static void main(String a[]){
int a;
String s;
Scanner scan = new Scanner(System.in);
System.out.println("enter a no");
a = scan.nextInt();
System.out.println("no is ="+a);
System.out.println("enter a string");
s = scan.nextLine();
System.out.println("string is="+s);
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
enter the no
1234
no is 1234
enter a string
string is= //why is it not allowing me to enter a string here?
Run Code Online (Sandbox Code Playgroud)
Nom*_*Sim 18
.nextInt()获取下一个int,但不读取新行字符.这意味着当您要求它读取"下一行"时,您将从第一次开始读取新行字符的结尾.
您可以.nextLine()在int修复此问题后插入另一个.或者(我更喜欢这种方式),将其int作为a 读取string,并将其解析为int.
这是一个常见的误解,如果在使用nextInt()之后立即对nextLine()使用相同的Scanner,则会引起混乱。
您可以自己解决光标跳到下一行的问题,也可以只对Integer使用其他扫描仪。
选项A:使用2个不同的扫描仪
import java.util.Scanner;
class string
{
public static void main(String a[]){
int a;
String s;
Scanner intscan =new Scanner(System.in);
System.out.println("enter a no");
a=intscan.nextInt();
System.out.println("no is ="+a);
Scanner textscan=new Scanner(System.in);
System.out.println("enter a string");
s=textscan.nextLine();
System.out.println("string is="+s);
}
}
Run Code Online (Sandbox Code Playgroud)
选项B:跳到下一行
class string
{
public static void main(String a[]){
int a;
String s;
Scanner scan =new Scanner(System.in);
System.out.println("enter a no");
a = scan.nextInt();
System.out.println("no is ="+a);
scan.nextLine();
System.out.println("enter a string");
s = scan.nextLine();
System.out.println("string is="+s);
}
}
Run Code Online (Sandbox Code Playgroud)