为了账号安全,请及时绑定邮箱和手机立即绑定

尝试使用 Integer.parseInt() 将字符串转换为整数时出错

尝试使用 Integer.parseInt() 将字符串转换为整数时出错

幕布斯7119047 2023-11-10 17:07:15
***更新我的帖子以显示我的所有代码,希望这提供更多上下文。当我运行该程序时,它会跳过我的第一个“if”语句并抛出错误。***我收到错误Exception in thread "main" java.lang.NumberFormatException: For input string: ""我正在尝试在 while 循环的第一个 else 语句中将字符串变量转换为 int...错误发生在int examScore = Integer.parseInt(userInput).   import java.util.Scanner;//imports scanner   public class ExamScoresCalculator{   public static void main(String[] args){   Scanner scan = new Scanner(System.in);//creates new scanner object    //prompts user for lowest possible exam score   System.out.println("Enter the lowest possible value for the exam: ");   int lowRange = scan.nextInt();   //prompts user for highest possible exam score   System.out.println("Enter the highest possible value for the exam: ");   int highRange = scan.nextInt();   boolean flag = true; //while loop flag   double lowestExamScore = highRange; // holds lowest score   double highestExamScore = lowRange; //holds highest score   double totalPoints = 0; //holds sum of all scores entered   int totalExams = 0; //holds the total number of exams entered by the user   while (flag == true){      System.out.println("Enter an exam score between " + lowRange + " and " + highRange + " or type exit. "); //asks user for an exam score within correct range           String userInput = scan.nextLine();      if ((userInput.equals("exit")) || (userInput.equals("Exit")) || (userInput.equals("EXIT"))){ //checks if user enters "exit"         flag = false; //ends while loop      }
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

一旦您按ENTER输入最高分数,扫描仪就会读取整数(nextInt),但也会读取行尾(nextLine)。由于该行中没有提供文本,因此它被读取为空字符串“”。


您应该在代码中将scanner.nextInt替换为scanner.nextLine。它应该可以在以下更改中正常工作。


//prompts user for lowest possible exam score

  System.out.println("Enter the lowest possible value for the exam: ");

   int lowRange = Integer.parseInt(scan.nextLine());


   //prompts user for highest possible exam score

System.out.println("Enter the highest possible value for the exam: ");

   int highRange = Integer.parseInt(scan.nextLine());


查看完整回答
反对 回复 2023-11-10
?
慕慕森

TA贡献1856条经验 获得超17个赞

请使用userInput和 的两个输入examScore,这将解决您的问题,因为您不能对StringInteger数据类型使用单个值。

(但当您的输入值为“123”(仅限数字)时,这是可能的,即使这也不适用于您的程序)


查看完整回答
反对 回复 2023-11-10
?
忽然笑

TA贡献1806条经验 获得超5个赞

添加 scan.nextLine() 来移动扫描仪以读取下一行(新行)。


System.out.println("Enter the highest possible value for the exam: ");

int highRange = scan.nextInt();

scan.nextLine();   // Add this line 


查看完整回答
反对 回复 2023-11-10
  • 3 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信