[英]Convert string array to integer array using Integer.parseInt() not possible
[英]Error when trying to convert string to integer using Integer.parseInt()
***更新我的帖子以显示我的所有代码,希望这能提供更多上下文。
当我运行程序时,它会跳过我的第一个“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
}else{
int examScore = Integer.parseInt(userInput); //converts user input into integer
if (examScore >= lowRange && examScore <= highRange){ //checks if user entered a correct test score
totalExams += 1; //increments totalExams by 1
totalPoints += examScore; //adds examScore total to totalPoints
if (examScore < lowestExamScore){ //checks if the exam score entered is the lowest
lowestExamScore = examScore; //updates lowestExamScore variable
}
else if (examScore > highestExamScore){ //checks if exam score entered is the highest
highestExamScore = examScore; //updates highestExamScore variable
}
}else{
System.out.println("Please enter a correct score."); //asks user to enter a correct score
}
}
}//closing while loop
//prints the total number of exams, lowest score, highest score, and average score to screen
System.out.println("Total number of exams: " + totalExams);
System.out.println("Lowest exam score: " + lowestExamScore);
System.out.println("Highest exam score: " + highestExamScore);
System.out.println("Average exam score: " + (totalPoints / totalExams));
}//closing main
}//closing class
请为userInput
和examScore
使用两个输入,这将解决您的问题,因为您不能对String
和Integer
数据类型使用单个值。
(但是当您的输入值为“123”(仅限数字)时,即使这也不适用于您的程序,也是可能的)
添加 scan.nextLine() 以移动扫描仪以读取下一行(新行)。
System.out.println("Enter the highest possible value for the exam: ");
int highRange = scan.nextInt();
scan.nextLine(); // Add this line
在您按下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());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.