在将控制权转移到位于程序中另一个类中的另一个方法后,我在接受来自键盘的输入时遇到了很大问题。我得到的错误是:
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 调用的方法的类。写到文件()
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;
}
请注意,在提及Fname时
再一次,我面临的问题是在提示用户输入全名后接受来自键盘的输入。程序跳过它,记录一个空值,并导致我的程序的其余部分无法正常工作(显然)。
我知道nextLine()
不会等待用户的输入(http://answers.yahoo.com/question/index?qid=20090103175947AA5pyjq),而是返回换行符之前的所有内容,但即使使用BufferedReader来接受输入,即使在从main关闭Scanner之后,即使在使用不同的变量名之后,我似乎也无法回避这个问题。
请帮帮忙。
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;
}
}
问题内容: 我正在使用Java进行编程。 我正在尝试编写可识别用户是否在基于 控制台的程序中 按Enter键的代码 。 我如何使用Java做到这一点。有人告诉我,可以使用“扫描仪”或缓冲输入阅读器完成此操作。我不了解(或不知道如何使用)缓冲输入阅读器。 我尝试使用扫描仪执行此操作,但在按Enter键两次后,程序终止,并且不起作用 谢谢 -编辑-以下代码使用字符串方法代替 如何做到这一点?使用缓冲输
我让一个用户输入一个整数字符串,然后将它们添加到ArrayList,但我需要验证每个条目是否为正整数。我尝试了do/while循环、嵌套while环,而使用嵌套if和每个循环都会遇到自己的一组问题。 作为我当前设置的示例:用户输入例如:1 2 3 4 pageVar是我的扫描仪,pageRef是我的ArrayList 运行这个my while在等待更多的输入时被卡住了,我不知道如何打破它。
问题内容: 我不明白为什么第15行不做任何输入,将不胜感激:3 输出量 请输入您的问题的第一个数字!2552所以您选择了2552选择您的第二个数字41您选择了第二个数字41现在输入ur运算符 由于某种原因,输出在最后一行结束并停止,并且不接收任何信息! 问题答案: 您需要在调用行的后面立即调用,原因是仅要求下一个整数不会占用输入中的整个行,因此您需要通过调用来跳至输入中的下一个新行字符。 每次您需
问题内容: 我有两个Java类,一个包含getter和setter,另一个是驱动程序类。我需要来自驱动程序类中扫描程序的用户输入才能属于第一类中的getter。用户输入必须为double,因为它将用作getter中的公式。 问题答案: 真正最好的是将所有内容都放在一个类中,没有理由将一个类分成两个类,只是为了使获取器和设置器与其他类分开,这 没有任何意义 。我确实想知道您是否误解了您的作业。 现在
我正在构建一个基本的价格检查应用程序,可以扫描条形码并显示产品信息,并试图在内置条形码扫描仪的Android平板电脑上运行它。 扫描仪可以工作,如果我把一个文本框放在应用程序上并对其进行聚焦,我扫描的条形码就会写在上面--然而,如果应用程序不对文本框进行聚焦,我就无法捕捉输入(应用程序应该没有输入区域,只有图像和文本视图标签)。 我查看了重写KeyUp和KeyDown事件,但它们似乎是为捕获单个键
我开发了一个字符排序器,我想每次字符串排序后提示用户输入一个新的字符串。我遇到的问题是扫描仪一直在扫描用户的第一个输入。如果我使用scanner.next(),它不会计算输入末尾的空白,这不是解决方案。 这是while循环的开始。一旦代码完成,它将再次从“inputtext”开始。