gpt4 book ai didi

java - 线程中的异常 "main"java.util.NoSuchElementException : No line found at java. util.Scanne

转载 作者:行者123 更新时间:2023-11-30 08:09:31 25 4
gpt4 key购买 nike

为学校期末项目制作此程序。当我尝试运行时出现错误,并且不确定需要做什么来修复它。错误说:

Exception in thread "main" java.util.NoSuchElementException: No line found

at java.util.Scanner.nextLine(Scanner.java:1585)

at BusinessCardMaker.getName(BusinessCardMaker.java:41)

at BusinessCardMaker.instructions(BusinessCardMaker.java:28)

at BusinessCardMaker.main(BusinessCardMaker.java:131)

我做错了什么。我可以改变什么来使程序变得更好?我的代码有什么问题导致了这些错误?

提前感谢大家!

import java.util.Scanner;
import java.io.*;
import java.util.Random;
public class BusinessCardMaker{
private static String wholeName;
private static String firstLineAddress;
private static String secondLineAddress;
private static String company;
private static String location;
private static String jobTitle;
private static int officePhoneNum;
private static String extNum;
private static int input;
private static String email;
private static int cellNum;
private static int cardNumber;
public static void instructions() throws IOException{
System.out.println("Welcome to your very own Business Card Maker");
System.out.println("\nTo access the program please type 1");
Scanner keyboard = new Scanner(System.in);
int startProgram = keyboard.nextInt();
keyboard.close();
if(startProgram == 1)
{
getName();
getAddress();
getDepartment();
getPhoneNums();
getEmail();
generateCardNum();
cardMaker();
}
}
public static void getName()
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Please input your whole name in this format (First M. Last)");
wholeName = keyboard.nextLine();
keyboard.close();
}
public static void getAddress(){
Scanner keyboard = new Scanner(System.in);
System.out.println("What is the first line of your address?");
firstLineAddress = keyboard.nextLine();
System.out.println("What is the second line of your address?");
secondLineAddress = keyboard.nextLine();
keyboard.close();
}
public static void getDepartment(){
Scanner keyboard = new Scanner(System.in);
System.out.println("What company do you work for?");
company = keyboard.nextLine();
System.out.println("What particular location of company do you work for?");
location = keyboard.nextLine();
System.out.println("What is your primary position?");
jobTitle = keyboard.nextLine();
keyboard.close();
}
public static void getPhoneNums()
{
Scanner keyboard = new Scanner(System.in);
System.out.println("What is your cell phone number?");
cellNum = keyboard.nextInt();
System.out.println("What is your office phone number?");
officePhoneNum = keyboard.nextInt();
System.out.println("Do you have and office extention? If yes enter 1, if no enter 0");
input = keyboard.nextInt();
if (input == 1) {
Scanner keyboardExt = new Scanner(System.in);
System.out.println("What is your extention number?");
extNum = keyboardExt.nextLine();
keyboardExt.close();
} else {
extNum = "N/A";
}
keyboard.close();
}
public static void getEmail(){
Scanner keyboard = new Scanner(System.in);
System.out.println("What is your Email Address?");
email = keyboard.nextLine();
keyboard.close();
}
public static void generateCardNum(){
System.out.println("We automatically generated a random business card number");
Random random = new Random();
cardNumber = random.nextInt(1000) + 1;
}
public static void save() throws IOException {
String businessCard = "Business_Card.txt";
File myFile = new File (businessCard);
PrintWriter writer = new PrintWriter(myFile);
System.out.println("Your card has been saved to " + businessCard);
writer.println("\n\n Your Business Card");
writer.println("\n*****************************************************************************");
writer.println("Card Number:" + cardNumber);
writer.println("\n"+company);
writer.println("\n\n\n\n\n "+wholeName);
writer.println(" "+jobTitle);
writer.println("\n\n\n\n\n");
writer.println(location+" "+"Office:"+officePhoneNum+"Ext:"+extNum);
writer.println(firstLineAddress+" "+"Cell:"+cellNum);
writer.println(secondLineAddress+" "+"Email:"+email);
writer.close();
}
public static void checkForFile() throws IOException{
String businessCard = "Business_Card.txt";
File myFile = new File (businessCard);
if(!myFile.exists()){
myFile.createNewFile();
}
}
public static void cardMaker() throws IOException {
System.out.println("\n\n Your Business Card");
System.out.println("\n*****************************************************************************");
System.out.println("Card Number:" + cardNumber);
System.out.println("\n"+company);
System.out.println("\n\n\n\n\n "+wholeName);
System.out.println(" "+jobTitle);
System.out.println("\n\n\n\n\n");
System.out.println(location+" "+"Office:"+officePhoneNum+"Ext:"+extNum);
System.out.println(firstLineAddress+" "+"Cell:"+cellNum);
System.out.println(secondLineAddress+" "+"Email:"+email);
checkForFile();
save();
}
public static void main (String[]args) throws IOException{
instructions();
}
}

最佳答案

keyboard.hasNextLine() 必须在调用 keyboard.nextLine() 之前返回 true

根据您真正想要实现的目标,您可能希望像这样使用它:

if(keyboard.hasNextLine()) {
String line = keyboard.nextLine();
}

.hasNextLine() 被动地阻塞等待行出现(新行字符出现),因此下一个解决方案是将调用包围起来

keyboard.nextLine()

使用 try/catch。

关于java - 线程中的异常 "main"java.util.NoSuchElementException : No line found at java. util.Scanne,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30598052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com