问题描述
- 输出总是“请输入i的值 3 请输入您的姓名: 请输入您的性别:”不能输出第一个String
-
import java.util.*;
public class Myproject {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("请输入i的值");
int i=in.nextInt();
int j=0;
for(j=1;j<=i;j++)
{System.out.println("请输入您的姓名:");
String nname=in.nextLine();
System.out.println("请输入您的性别:");
String nsex=in.nextLine();
System.out.println("请输入您的年龄:");
int nage=in.nextInt();
System.out.println("请输入您的成绩:");
float nscore=in.nextFloat();
Student stu=new Student();stu.name=nname;
stu.sex=nsex;
stu.age=nage;
stu.score=nscore;
stu.speak("年龄:"+stu.age+"岁;");
stu.grade(stu.score);
}
}}
class Student{
String name;
String sex;
int age;
float score;
public void speak(String inStr){
System.out.print("自我介绍:我叫"+name+";"+"性别:"+sex+";"+inStr);//可以加其他语句
}
public void grade(float inScore){
System.out.println("java成绩:"+inScore);
}
}
解决方案
原因:nextInt()不读入“n”;而nextLine()读入"n"。
在你输入“3+回车"进入下一个输入环节的时候,"3"被nextInt()读入,而回车(相当于"n")还留着。下一个nextLine()就把那个"n"给读进去。
给人一种跳过输入的假象,其实是他读了一个空行。
解决办法:在"int i=in.nextInt();"下面紧接一行"in.nextLine();"。不需要变量接收他。他去读入那个"n"。之后就都正常了。
解决方案三:
用next去读string类型的OK了