Java 扫描器类有问题吗
我正在使用Scanner类获取文件名。但我的扫描器甚至没有问我任何字符串。它只是将输入的字符串设置为“”(空字符串)。另外一个问题是,我正在使用FileOutputStream编写一个文件。如果文件不存在,是否应该创建该文件?这是我使用scanner的部分代码Java 扫描器类有问题吗,java,serialization,io,java.util.scanner,fileoutputstream,Java,Serialization,Io,Java.util.scanner,Fileoutputstream,我正在使用Scanner类获取文件名。但我的扫描器甚至没有问我任何字符串。它只是将输入的字符串设置为“”(空字符串)。另外一个问题是,我正在使用FileOutputStream编写一个文件。如果文件不存在,是否应该创建该文件?这是我使用scanner的部分代码 else if(user_choice == 3){ System.out.println("kaydedilecek dosyanın ismini giriniz : ");
else if(user_choice == 3){
System.out.println("kaydedilecek dosyanın ismini giriniz : ");
String file_name = s.nextLine();
IOdata iod = new IOdata(data);
iod.save_data(file_name);
下面的代码是关于io的
public void save_data(String file_name) throws IOException {
try {
FileOutputStream fos = new FileOutputStream(file_name);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(data);
oos.close();
}catch (FileNotFoundException e){
file_name = "default";
FileOutputStream fos = new FileOutputStream(file_name);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(data);
oos.close();
}
}
编辑我的菜单类的全部内容:
import java.io.IOException;
import java.util.Scanner;
public class Menu {
public Menu() throws IOException {
Scanner s = new Scanner(System.in);
Data data = new Data();
while(true){
System.out.println("1-data oluştur");
System.out.println("2-datayı yükle");
System.out.println("3-datayı kaydet");
System.out.println("4-çıkış");
System.out.println("5-yazdır");
int user_choice = s.nextInt();
if(user_choice == 4) {
break;
}else if(user_choice == 1){
DataManupilator dm = new DataManupilator(data);
System.out.println("datanın uzunluğunu giriniz : ");
int length = s.nextInt();
data = dm.generate_data(length);
}else if(user_choice == 5){
data.print_items();
}else if(user_choice == 3){
System.out.println("kaydedilecek dosyanın ismini giriniz : ");
String file_name = s.nextLine();
IOdata iod = new IOdata(data);
iod.save_data(file_name);
}else if(user_choice == 2){
System.out.println("datanın bulunduğu dosyanın ismini giriniz : ");
String file_name = s.nextLine();
IOdata iod = new IOdata(data);
iod.save_data(file_name);
}
}
}
}
我的代码中有一些土耳其字符串,所以让我解释一下。如果用户选择3,程序将向文件写入数据。尝试输入选项numer
int user\u choice=Integer.parseInt(s.nextLine())代码>我们需要更多信息。如何创建扫描仪?您正在扫描什么/如何获取输入?您是否在=新扫描仪(System.in)中声明了与此扫描仪类似的扫描仪?我进行了编辑以添加我的菜单类的完整代码。现在你可以看到了。@am0awad是的,我用那种方式工作。但我对扫描仪的工作原理很好奇。扫描仪仅与1种类型的值兼容?我的意思是,我需要两个扫描器来获取两种不同类型的值。因为parseInt()。放置nextLine()
@BaranSAHİN-我建议您阅读Scanner
的javadoc,或者查找解释其工作原理的教程。作为一种学习方式,你阅读要比我们通过评论或其他方式给你提供个人指导更有效率和效果。我不能确切地理解它是如何工作的。因为源代码比我想象的要复杂,但我的问题解决了。谢谢你的帮助。