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;
    }   
}