线程 "main" java.util.NoSuchElementException 中的异常:在 java.util.Scanne 处找不到行
Exception in thread "main" java.util.NoSuchElementException: No line found at java.util.Scanne
为学校的期末项目制作这个程序。当我尝试 运行 并且不确定我需要做什么来修复它时出现错误。
错误说:
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.nextLine()
之前,keyboard.hasNextLine()
必须 return true
根据您真正想要实现的目标,您可能希望像这样使用它:
if(keyboard.hasNextLine()) {
String line = keyboard.nextLine();
}
.hasNextLine()
被动地阻塞等待行出现(新行字符出现)所以下一个解决方案是围绕对
的调用
keyboard.nextLine()
和try/catch。
为学校的期末项目制作这个程序。当我尝试 运行 并且不确定我需要做什么来修复它时出现错误。 错误说:
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.nextLine()
之前,keyboard.hasNextLine()
必须 return true
根据您真正想要实现的目标,您可能希望像这样使用它:
if(keyboard.hasNextLine()) {
String line = keyboard.nextLine();
}
.hasNextLine()
被动地阻塞等待行出现(新行字符出现)所以下一个解决方案是围绕对
keyboard.nextLine()
和try/catch。