我正在尝试从文本文件中读取数据并将其插入到数组中,文件中的一个行间隙意味着将创建一个新数组。应关闭两条线和扫描仪。这是文本文件:
`Test
test
test
Telephone
Cardiology
Test Doctor 2
Test
20 Test
Telephone
Cardiology
`
public Object[][] readData() throws FileNotFoundException{
Scanner sc = new Scanner(new File("DoctorRecordsFile.txt"));
String line;
int emptyFile = 0 ;
int i = 0;
int x = 0;
String[][] doctor = new String[100][5];
while (emptyFile <= 1){
line = sc.nextLine() ;
if ((!line.isEmpty())){
doctor[i][x] = line;
System.out.println(doctor[i][x]);
x++;
emptyFile = 0;
}
else{
System.out.println("PRE call emptyFile: " + emptyFile);
emptyFile++;
System.out.println("Post call emptyFile: " + emptyFile);
if(emptyFile >= 2){
sc.close();
}
else{
i++;
x = 0;
}
}
}
return new Object[][]{doctor[0]};
我期望的实际结果是扫描仪会关闭并停止读取数据,这是我的控制台错误:
at java.util.Scanner.nextLine(Scanner.java:1540)
at medicalsystem.ReadInDoctors.readData(ReadInDoctors.java:35)
at medicalsystem.MainMenu.View_Doctor_ButtonActionPerformed(MainMenu.java:193)
答案 0 :(得分:1)
正在寻找这个? https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#hasNextLine()
它应该包含在您的while语句中。这样您就不需要 fun_dens_spe_pm<-function (donnees_dens_sp_1,pm_peche){
dens_sp<-subset(donnees_dens_sp_1, donnees_dens_sp_1$CodeOnema == pm_peche)
dens_sp$Espece<-as.character(dens_sp$nom_sp)
list_sp_pm<-as.list(unique(dens_sp$nom_sp))
# # Test
# Esp<-list_sp_pm[[1]]
dens_par_sp<-function (dens_sp, Esp){
# Selection de l'espèce i présente sur la station
dens_sp_i<-subset(dens_sp,dens_sp$nom_sp == Esp)
# Selection des champs pour création des graphiques
dens_sp_i<- dens_sp_i[,c("CodeOnema","Date","densite_sp")]
dens_sp_i$Date<-as.numeric(dens_sp_i$Date)
# Test du nombre d'années ou l'espèce i est présente sur la chronique
ifelse(
# Condition : présence de l'espèce inférieure ou égale à 2 années
nrow(dens_sp_i) <= 2,
# Si oui : Graphique si présence "excetpionnelle" d'une espèce
p_dens_sp_pm <- ggplot(data = dens_sp_i, aes(x= Date, y = densite_sp)) +
geom_point(size = 3,col = "firebrick") +
geom_text(aes(x= Date, y = densite_sp,fill = densite_sp),
label=paste0("Présence exceptionnelle de l'espèce en","",Date), color="firebrick") +
scale_x_continuous(breaks = scales::pretty_breaks(n = 6))+
scale_y_continuous(breaks = scales::pretty_breaks(n = 12))+
labs(x="Années",y ="Densité spécifique (ind/100 m2)") +
theme(text = element_text(size=11),plot.title = element_text(hjust = 0.5),legend.position="none")+
ggtitle(paste0("Evolution de la densité de l'espèce"," ",Esp," ", "sur la station"," ",pm_peche)),
# Si non : Graphique si présence "continue" sur la série temporelle
p_dens_sp_pm<-ggplot(data = dens_sp_i, aes(x= Date, y = densite_sp,fill = densite_sp)) +
geom_line(size = 1,col = "dodgerblue2",linejoin = "round")+
geom_point(size = 3,col = "firebrick") +
scale_x_continuous(breaks = scales::pretty_breaks(n = 6))+
scale_y_continuous(breaks = scales::pretty_breaks(n = 12))+
labs(x="Années",y ="Densité spécifique (ind/100 m2)") +
theme(text = element_text(size=11),plot.title = element_text(hjust = 0.5),legend.position="none")+
ggtitle(paste0("Evolution de la densité de l'espèce"," ",Esp," ", "sur la station"," ",pm_peche)))
# Visualisation du graphique
p_dens_sp_pm
# Enregistrement du graphe
nom_graphe <-paste0("Densité_sp","_",Esp,"_",pm_peche,".png")
ggsave(plot = p_dens_sp_pm,filename = nom_graphe,device ="png",
path = paste0("./EEE/graphes/sta_RHP_complete/indicateurs/densite_relative/",pm_peche),
width = 25, height = 18, units = "cm")
}
# Boucle d'application de la fonction
for (i in seq.int(list_sp_pm)) {
graphe<-dens_par_sp(dens_sp,list_sp_pm[[i]])
}
}
变量。
答案 1 :(得分:0)
我在文本文件中看不到两行空行。检查输入文件是否有另一行要读取怎么样?如下所示:
while (emptyFile <= 1) {
if (sc.hasNextLine()) {
line = sc.nextLine();
if ((!line.isEmpty())) {
doctor[i][x] = line;
System.out.println(doctor[i][x]);
x++;
emptyFile = 0;
} else {
System.out.println("PRE call emptyFile: " + emptyFile);
emptyFile++;
System.out.println("Post call emptyFile: " + emptyFile);
if (emptyFile >= 2) {
sc.close();
} else {
i++;
x = 0;
}
}
}
}
注意我将你的代码包装在if语句中:&#34; if(sc.hasNextLine()){&#34;