java中next与nextLine的用法
importjava.util.*;publicclassRetirement2{publicstaticvoidmain(String[]args){Scannerin...
import java.util.*;
public class Retirement2
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("How much money will you contribute every year? ");
double payment = in.nextDouble();
System.out.print("Interest rate in %: ");
double interestRate = in.nextDouble();
double balance = 0;
int year = 0;
String input;
// update account balance while user isn't ready to retire
do
{
// add this year's payment and interest
balance += payment;
double interest = balance * interestRate / 100;
balance += interest;
year++;
// print current balance
System.out.printf("After year %d, your balance is %,.2f%n", year, balance);
// ask if ready to retire and get input
System.out.print("Ready to retire? (Y/N) ");
input = in.nextLine();
}
while (input.equals("N"));
}
}
后面input = in.nextLine();这里用next就完全正常,可以输入字符。但是用nextLine程序就自动结束了,求解。
按照你的第一种方法确实解决问题了,可是我想知道in.nextLine()返回的是哪句话,而因此结束了呢? 展开
public class Retirement2
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("How much money will you contribute every year? ");
double payment = in.nextDouble();
System.out.print("Interest rate in %: ");
double interestRate = in.nextDouble();
double balance = 0;
int year = 0;
String input;
// update account balance while user isn't ready to retire
do
{
// add this year's payment and interest
balance += payment;
double interest = balance * interestRate / 100;
balance += interest;
year++;
// print current balance
System.out.printf("After year %d, your balance is %,.2f%n", year, balance);
// ask if ready to retire and get input
System.out.print("Ready to retire? (Y/N) ");
input = in.nextLine();
}
while (input.equals("N"));
}
}
后面input = in.nextLine();这里用next就完全正常,可以输入字符。但是用nextLine程序就自动结束了,求解。
按照你的第一种方法确实解决问题了,可是我想知道in.nextLine()返回的是哪句话,而因此结束了呢? 展开
2个回答
展开全部
in.nextLine();返回的是一个长度为0的空字符串:
可以在input = in.nextLine(); 后加
System.out.prinln("前"+input+"后,字符长度="+input.length());
你就能看到
next()要得到有效标记才能返回值,而nextLine()则不管这个,只要有当前行就能返回,当前行的剩余字符是0个照样返回。
修改方法有两种:
1、在每次in.nextDouble();后加一句in.nextLine();就不会出现这个问题了。
因为nextDouble没有义务处理换行,要用nextLine来处理换行,这样后面的input = in.nextLine(); 时没有新行,就会等待输入。
2、把while判断改为while(!input.equals("Y"));或者while (input.equals("N")&&(input.length()!=0));
可以在input = in.nextLine(); 后加
System.out.prinln("前"+input+"后,字符长度="+input.length());
你就能看到
next()要得到有效标记才能返回值,而nextLine()则不管这个,只要有当前行就能返回,当前行的剩余字符是0个照样返回。
修改方法有两种:
1、在每次in.nextDouble();后加一句in.nextLine();就不会出现这个问题了。
因为nextDouble没有义务处理换行,要用nextLine来处理换行,这样后面的input = in.nextLine(); 时没有新行,就会等待输入。
2、把while判断改为while(!input.equals("Y"));或者while (input.equals("N")&&(input.length()!=0));
2015-12-15 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
在java中,next()方法是不接收空格的,在接收到有效数据前,所有的空格或者tab键等输入被忽略,若有有效数据,则遇到这些键退出。
而nextLine()可以接收空格或者tab键,其输入应该以enter键结束。
当next()和nextLine()连用时,nextLine()会自动接收next()函数的结束符,所以为了避免数据接收有误,要避免二个函数连用。
而nextLine()可以接收空格或者tab键,其输入应该以enter键结束。
当next()和nextLine()连用时,nextLine()会自动接收next()函数的结束符,所以为了避免数据接收有误,要避免二个函数连用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询