Java中“while”的问题
发布时间:2020-12-14 23:47:02 所属栏目:Java 来源:网络整理
导读:我正在尝试 Java编程书中的几个练习.我有以下代码: import java.io.*;import java.util.Scanner;public class Ex420{ public static void main( String args[] ) { String employeeName = ""; double workHours,excessHours,hourlyRates,grossPay; Scanner
我正在尝试
Java编程书中的几个练习.我有以下代码:
import java.io.*; import java.util.Scanner; public class Ex420 { public static void main( String args[] ) { String employeeName = ""; double workHours,excessHours,hourlyRates,grossPay; Scanner input = new Scanner( System.in ); while ( employeeName != "stop" ) { System.out.printf( "nInput employee name or stop to exit: " ); employeeName = input.nextLine(); System.out.printf( "Input working hours: " ); workHours = input.nextDouble(); System.out.printf( "Input hourly rates: " ); hourlyRates = input.nextDouble(); if ( workHours <= 40 & workHours >= 0 ) { excessHours = 0; grossPay = hourlyRates * workHours; System.out.printf( "%s's gross pay is $%.2fn",employeeName,grossPay ); } else if ( workHours > 40 ) { excessHours = workHours - 40; grossPay = hourlyRates * 40 + 1.5 * hourlyRates * excessHours; System.out.printf( "n%s's worked for %.1f excess hours.n",excessHours ); System.out.printf( "%s's gross pay is $%.2fn",grossPay ); } else { System.out.printf( "Invalid input. Please try again." ); } } // end while } // end main } // end class Ex420 问题是,while循环似乎不起作用.每当我输入“stop”作为employeeName时,程序就会继续.我尝试用任何其他字符串替换“停止”,它仍然无法正常工作.但是当我尝试使用“stop”初始化employeeName时,程序会立即退出,这是预期的.我在这做错了什么? 此外,在第一个循环之后,程序总是跳过询问employeeName.我尝试替换employeeName = input.nextLine(); with employeeName = input.next();它不再跳过它.我想知道,有什么办法可以让我在使用employeeName = input.nextLine()时不跳过输入;? 在此先感谢您的帮助! 解决方法
我猜这是因为你在while循环中使用的!=测试比较字符串以获得引用相等性.也就是说,当它进行比较时,它不只是测试以查看字符串是否具有相同的字符序列;它检查它们是否是完全相同的对象.但是当Scanner创建一个String来包含它从标准输入读取的文本时,该String不会与代码中字符串文字“stop”的对象相同.它们是恰好具有相同内容的两个对象,但它们存在于内存中的不同位置,因此!=将它们视为不相等.
解决方案:改为开始你的循环: while (!"stop".equals(employeeName)) { (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |