Methods 调用导入类中的方法后,使用扫描仪接受键盘输入
在将控制权转移到程序中另一个类中的另一个方法后,我在接受键盘输入时遇到了很大的困难。我得到的错误是:Methods 调用导入类中的方法后,使用扫描仪接受键盘输入,methods,keyboard,java.util.scanner,Methods,Keyboard,Java.util.scanner,在将控制权转移到程序中另一个类中的另一个方法后,我在接受键盘输入时遇到了很大的困难。我得到的错误是: Exception in thread "main" java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Unknown Source) at com.group.work.fileReadWriter.WritetoFile(fileReadWriter.java:23)
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at com.group.work.fileReadWriter.WritetoFile(fileReadWriter.java:23)
at com.group.work.highCipher.main(highCipher.java:32)
以下是我的主要代码。我并没有把它剥离出来,以便让你们看到我在发布这个问题之前尝试过的多种方法,直到问题出现的地方
package com.group.work;
import java.io.File;
import java.util.Scanner;
/*
import fileDecrypter;
import fileEncrypter;
import fileReadWriter;
*/
public class highCipher {
public static void main(String[] args) {
fileReadWriter obj = new fileReadWriter();
int choice;
Scanner scan = new Scanner(System.in);
//fileEncrypter objd = null;
System.out.println("What Would You Like To Do ? \n 1 - Write To File \n 2 - Read From File \n ?:");
//String choic = scan.next();
choice = scan.nextInt();
//scan.nextLine();
scan.close();
//choice = Integer.parseInt(choic);
switch (choice)
{
case 1:
{
obj.WritetoFile();
break;
}
case 2:
{
obj.ReadfromFile();
break;
}
default:
{
System.out.println("Incorrect Value Entered");
break;
}
}
这是包含从obj.WritetoFile()调用的方法的类
package com.group.work;
导入java.io.*;
导入java.util.Scanner;
公共类fileReadWriter{
私有字符串输入=null;
//字符串Fname[]=新字符串[2];
//字符串Lname[]=新字符串[2];
专用扫描仪输入=新扫描仪(System.in);
公共无效写入文件(){
//InputStreamReader reader=新的InputStreamReader(System.in);
//BufferedReader in=新的BufferedReader(读卡器);
试一试{
PrintStream输出=新的PrintStream(新文件(“output.txt”);
{
System.out.println(“请输入全名”);
//input=in.readLine();/*我会在这里得到错误,
//input=in.next();此处,
input=in.nextLine();此处,
/*
对于(int x=0;x更改以使其工作
点评:
扫描。关闭主屏幕
和取消注释:
input=in.readLine()
-----------------------------------------------------------------------------------
主文件
=====================
包装simlpe;
导入java.io.File;
导入java.util.Scanner;
/*
导入文件解密程序;
进口文件加密机;
导入fileReadWriter;
*/
公共类简单{
公共静态void main(字符串[]args){
fileReadWriter obj=新建fileReadWriter();
智力选择;
扫描仪扫描=新扫描仪(System.in);
//fileEncrypter objd=null;
System.out.println(“您想做什么?\n 1-写入文件\n 2-从文件读取?:”;
//String choic=scan.next();
choice=scan.nextInt();
//scan.nextLine();
//scan.close();
//choice=Integer.parseInt(choic);
开关(选择)
{
案例1:
{
obj.WritetoFile();
打破
}
案例2:
{
obj.ReadfromFile();
打破
}
违约:
{
System.out.println(“输入的值不正确”);
打破
}
}
}
}
其他文件
============
包装simlpe;
导入java.io.*;
导入java.util.Scanner;
公共类fileReadWriter{
私有字符串输入=null;
字符串Fname[]=新字符串[2];
字符串Lname[]=新字符串[2];
专用扫描仪输入=新扫描仪(System.in);
公共无效写入文件(){
InputStreamReader reader=新的InputStreamReader(System.in);
BufferedReader in=新的BufferedReader(读卡器);
试一试{
PrintStream输出=新的PrintStream(新文件(“output.txt”);
{
System.out.println(“请输入全名”);
input=in.readLine();//我将在这里得到错误,
//input=in.next();//此处,
//input=in.nextLine();//此处,
对于(int x=0;x更改以使其工作
点评:
扫描。关闭主屏幕
和取消注释:
input=in.readLine()
-----------------------------------------------------------------------------------
主文件
=====================
包装simlpe;
导入java.io.File;
导入java.util.Scanner;
/*
导入文件解密程序;
进口文件加密机;
导入fileReadWriter;
*/
公共类简单{
公共静态void main(字符串[]args){
fileReadWriter obj=新建fileReadWriter();
智力选择;
扫描仪扫描=新扫描仪(System.in);
//fileEncrypter objd=null;
System.out.println(“您想做什么?\n 1-写入文件\n 2-从文件读取?:”;
//String choic=scan.next();
choice=scan.nextInt();
//scan.nextLine();
//scan.close();
//choice=Integer.parseInt(choic);
开关(选择)
{
案例1:
{
obj.WritetoFile();
打破
}
案例2:
{
obj.ReadfromFile();
打破
}
违约:
{
System.out.println(“输入的值不正确”);
打破
}
}
}
}
其他文件
============
包装simlpe;
导入java.io.*;
导入java.util.Scanner;
公共类fileReadWriter{
私有字符串输入=null;
字符串Fname[]=新字符串[2];
字符串Lname[]=新字符串[2];
专用扫描仪输入=新扫描仪(System.in);
公共无效写入文件(){
InputStreamReader reader=新的InputStreamReader(System.in);
BufferedReader in=新的BufferedReader(读卡器);
试一试{
PrintStream输出=新的PrintStream(新文件(“output.txt”);
{
System.out.println(“请输入全名”);
input=in.readLine();//我将在这里得到错误,
//input=in.next();//此处,
//input=in.nextLine();//此处,
对于(int x=0;xWow。你能解释一下为什么和如何工作吗?还有,我必须使用扫描器
来接受键盘的输入吗?除了BufferedReader
?我真的很喜欢java,除了这一小部分。我希望它像cin>>变量
一样简单。甚至scanf(“%d”)
还不错。叹气。实际上你的问题已经有了答案。扫描仪和缓冲读取器是读取输入的两种不同方法。若要查看它们之间的差异,请参见:。若要回答你的问题,请参见:。1)无需使用扫描仪,您可以使用缓冲读取器。2)scanner是缓冲读取器之外的另一种选择,java非常简单,也是一个简单的示例System.out.println(“输入名称”);scanner scan=new scanner(System.in);String s=scan.nextLine();我知道我找到了答案。我没有试着把它们混在一起。我不知道为什么它不起作用。但是谢谢
package com.group.work;
import java.io.*;
import java.util.Scanner;
public class fileReadWriter {
private String input = null;
//String Fname[]=new String[2];
//String Lname[]= new String[2];
private Scanner in = new Scanner(System.in);
public void WritetoFile (){
// InputStreamReader reader = new InputStreamReader(System.in);
//BufferedReader in = new BufferedReader(reader);
try{
PrintStream output = new PrintStream(new File("output.txt"));
{
System.out.println("please enter a full name");
//input = in.readLine(); /* I will get errors here,
//input = in.next(); here,
input = in.nextLine(); here,
/*
for(int x=0; x<Fname.length; x++){
Fname[x] = in.next(); and here. */
Lname[x] = in.next();
}
*/
//for(int i =0;i<Fname.length;i++){
// String sc =" ";
//output.println( Fname[i] +sc+ Lname[i] );
output.println(input);
}
output.close();
System.out.println ("File created successfully");
}
catch (IOException e) {
System.err.println("Error: " + e.getMessage());
}
return;
}
changes to make it work
comment out:
scan.close in main
and uncomment:
input = in.readLine()
-----------------------------------------------------------------------------------
main file
=====================
package simlpe;
import java.io.File;
import java.util.Scanner;
/*
import fileDecrypter;
import fileEncrypter;
import fileReadWriter;
*/
public class simple {
public static void main(String[] args) {
fileReadWriter obj = new fileReadWriter();
int choice;
Scanner scan = new Scanner(System.in);
//fileEncrypter objd = null;
System.out.println("What Would You Like To Do ? \n 1 - Write To File \n 2 - Read From File \n ?:");
//String choic = scan.next();
choice = scan.nextInt();
//scan.nextLine();
// scan.close();
//choice = Integer.parseInt(choic);
switch (choice)
{
case 1:
{
obj.WritetoFile();
break;
}
case 2:
{
obj.ReadfromFile();
break;
}
default:
{
System.out.println("Incorrect Value Entered");
break;
}
}
}
}
other file
============
package simlpe;
import java.io.*;
import java.util.Scanner;
public class fileReadWriter {
private String input = null;
String Fname[]=new String[2];
String Lname[]= new String[2];
private Scanner in = new Scanner(System.in);
public void WritetoFile (){
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(reader);
try{
PrintStream output = new PrintStream(new File("output.txt"));
{
System.out.println("please enter a full name");
input = in.readLine();// I will get errors here,
//input = in.next(); // here,
// input = in.nextLine(); // here,
for(int x=0; x<Fname.length; x++){
// Fname[x] = in.next();
// Lname[x] = in.next();
}
//for(int i =0;i<Fname.length;i++){
// String sc =" ";
//output.println( Fname[i] +sc+ Lname[i] );
output.println(input);
}
output.close();
System.out.println ("File created successfully");
}
catch (IOException e) {
System.err.println("Error: " + e.getMessage());
}
return;
}
}