java - 编译时线程“main”java.util.NoSuchElementException 中的异常
问题描述
当我尝试运行我的代码时,这是我得到的错误:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Main.main(Main.java:86)
我尝试在线搜索但一无所获,这是我的完整代码:(我相信我的代码可以正常工作并且没有实际的“错误”)
import java.util.*;
class Account{
String name,acc_type;
int Acc_num,Acc_Balance;
Account(){
}
Account(String n,int acc_num,int b,String a_t){
name=n;
Acc_num=acc_num;
Acc_Balance=b;
acc_type=a_t;
}
} // end class
class create_account extends Account{
create_account(String n,int acc_num,int b,String a_t){ // pass name and account type
name=n;
Acc_num=acc_num;
Acc_Balance=b;
acc_type=a_t;
}
create_account(){
super();
}
void insert(String n,int acc_num,String a_t){ // input user name, account number and type
name=n;
acc_type=a_t;
Acc_num=acc_num; // generate random number
Acc_Balance=0;
}
void display_details(){
System.out.println("Depositor Name :" +name);
System.out.println("Account Number : "+Acc_num);
System.out.println("Account Balance : "+Acc_Balance);
System.out.println("Account Type : "+acc_type);
}
void deposite(int acc_num,int money){
Acc_Balance=money;
}
int withdraw(int withd){
Acc_Balance=Acc_Balance-withd;
return Acc_Balance;
}
} // end class
public class Main {
public static void main(String args[]){
String user_name=null,type;
type = null;
int balance=0,tmp=0;
int withd=0,cb=0;
// to generate Random Account Number
int aNumber = 0;
aNumber = (int)((Math.random() * 9000)+1000);
create_account user = new create_account("user",0,0,"savings"); // initilaize -- name,acc_number,Balance,Type
Scanner in = new Scanner(System.in);
Scanner strng=new Scanner(System.in);
int userChoice;
boolean quit = false;
do {
System.out.println("1. Create Account");
System.out.println("2. Deposit money");
System.out.println("3. Withdraw money");
System.out.println("4. Check balance");
System.out.println("5. Display Account Details");
System.out.println("0. to quit: \n");
System.out.print("Enter Your Choice : ");
userChoice = in.nextInt();
switch (userChoice) {
case 1:
System.out.print("Enter your Name : ");
user_name=strng.nextLine();
System.out.print("Enter Accout Type : ");
type=in.next();
user.insert(user_name, aNumber, type); // inserted
System.out.println("\n\tYour Account Details\n\tDont Forget Account Number\n");
System.out.println("**************************");
user.display_details();
break;
case 2: // deposite
System.out.print("Enter your account Number : ");
tmp=in.nextInt();
if(tmp==user.Acc_num){
System.out.print("Enter Amount Of Money : ");
balance=in.nextInt();
user.Acc_Balance=balance;
System.out.println("\t Successfully Deposited.");
}
else
System.out.println("Wrong Accoount Number.");
break;
case 3: // withdraw money
System.out.print("Enter your account Number : ");
tmp=in.nextInt();
if(tmp==user.Acc_num){
if(user.Acc_Balance==0)
System.out.print("Your Account is Empty.");
else{
System.out.print("Enter Amout Of Money : ");
withd=in.nextInt();
if(withd>user.Acc_Balance){
System.out.print("Enter Valid Amout of Money : ");
withd=in.nextInt();
}
else
cb= user.withdraw(withd);
System.out.println("Your Current Balance : "+cb);
}
}
else
System.out.println("Wrong Accoount Number.");
break;
case 4: // check balance
System.out.print("Enter your Account Number : ");
tmp=in.nextInt();
if(tmp==user.Acc_num){
System.out.println("Your Current Balance : "+user.Acc_Balance);
}
else
System.out.println("Wrong Accoount Number.");
break;
case 5: // display all info
System.out.print("Enter your Account Number :");
tmp=in.nextInt();
if(tmp==user.Acc_num){
user.display_details();
}else
System.out.println("Wrong Accoount Number.");
break;
case 0:
quit = true;
break;
default:
System.out.println("Wrong Choice.");
break;
}
System.out.println("\n");
} while (!quit);
System.out.println("Thanks !");
} // end main function
} // end main class
我希望你们能帮我解决这个问题,因为我从来没有遇到过这样的问题,老实说,我不确定如何解决这个问题..
尝试使用不同的编译器等,但没有解决这个问题
我也尝试过添加和删除代码,但没有解决这个问题,这就是我制作这个线程的原因。我不是在没有查看所有其他有类似问题的情况下就做了这个。
解决方案
class Main {
public static void main(String args[]){
String user_name=null,type;
type = null;
int balance=0,tmp=0;
int withd=0,cb=0;
从public class Main中删除public关键字并仅使用class Main,以便您的代码正常工作。
推荐阅读
- r - R中带有tesseract的OCR无法识别所有换行符
- ruby-on-rails - 如果我可以在 redmine 控制器中的“before action”之后添加“if”
- java - Spring构建CSV字符串并用它下载一个文件
- jquery - 如何检查jquery验证器中每个验证修复中剩余多少无效字段
- excel - 循环遍历 Excel 工作表中的单元格
- android - 如何通过广播接收器获取发送的短信详细信息
- javascript - 批量更新,txt文件名与第三行内容(第三行内)
- scikit-learn - 使用预定义的拆分重新调整网格搜索的属性?
- arrays - 如何使用嵌套数组创建 JSON 响应
- python - lxml object identifiers appear to be reused while objects are alive