Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 请注意文件名,以及如何打印我从电脑中选择的文件名?_Java_Bluej - Fatal编程技术网

Java 请注意文件名,以及如何打印我从电脑中选择的文件名?

Java 请注意文件名,以及如何打印我从电脑中选择的文件名?,java,bluej,Java,Bluej,这是一个简单的问题,如何打印出选定的文件名,谢谢 public class CSVMAX { public CSVRecord hottestInManyDays() { //select many csv files from my computer DirectoryResource dr = new DirectoryResource(); CSVRecord largestSoFar = null; //read every row and implement the me

这是一个简单的问题,如何打印出选定的文件名,谢谢

public class CSVMAX {
public CSVRecord hottestInManyDays() {
//select many csv files from my computer
   DirectoryResource dr = new DirectoryResource();
   CSVRecord largestSoFar = null;
//read every row and implement  the method we just define
   for(File f : dr.selectedFiles()) {
    FileResource fr = new FileResource(f);
    CSVRecord currentRow = hottestHourInFile(fr.getCSVParser());
    if (largestSoFar == null) {
       largestSoFar = currentRow;
    }
    else {
    double currentTemp = Double.parseDouble(currentRow.get("TemperatureF"));
        double largestTemp = Double.parseDouble(largestSoFar.get("TemperatureF"));
        //Check if currentRow’s temperature > largestSoFar’s
    if (currentTemp > largestTemp) {
                //If so update largestSoFar to currentRow
            largestSoFar = currentRow;
    }
   }
}
return largestSoFar;        
}
在这里,我想打印出文件名,但我不知道怎么做

public void testHottestInManyDay () {
    CSVRecord largest = hottestInManyDays();
    System.out.println("hottest temperature on that day was in file " + ***FILENAME*** + largest.get("TemperatureF") +
               " at " + largest.get("TimeEST"));
}
}

参考(文件f:dr.selectedFiles())的行

f
是一个[]。它有一个方法[来自文档]

返回此抽象路径名的路径名字符串。这只是 getPath()方法返回的字符串

因此,在循环的第一行中,您可以放置
System.out.println(f.toString())
以打印出文件路径

希望这有助于澄清故事的一部分


现在,为了更新这个字符串,我看到您在
testHottestInManyDay()
中使用了一个名为
max
的对象。您应该在此对象中添加文件路径字符串,并将其设置在
else
块中。

参考(文件f:dr.selectedFiles())的
行。

f
是一个[]。它有一个方法[来自文档]

返回此抽象路径名的路径名字符串。这只是 getPath()方法返回的字符串

因此,在循环的第一行中,您可以放置
System.out.println(f.toString())
以打印出文件路径

希望这有助于澄清故事的一部分


现在,为了更新这个字符串,我看到您在
testHottestInManyDay()
中使用了一个名为
max
的对象。您应该在此对象中添加一个文件路径字符串,并将其设置在
else
块中。

最终,似乎
hotestinmanydays()
将需要返回此信息

CSVRecord
是否有此属性?

大概是这样的:

CSVRecord currentRow = hottestHourInFile(fr.getCSVParser());
currentRow.setFileName(f.getName());
CSVWrapper csvWrapper = new csvWrapper();
csvWrapper.setCSVRecord(currentRow);
csvWrapper.setFileName(f.getName());
如果没有,是否可以添加这样的属性?

可能
CSVRecord
没有该属性。但它可以被添加吗

private String _fileName;

public void setFileName(String fileName) {
    this._fileName = fileName;
}

public String getFileName() {
    return this._fileName;
}
如果没有,能否为这两条信息创建包装类?

如果您无法修改
CSVRecord
,并且它没有放置所需信息的位置,请将其包装到一个有位置的类中。像这样简单的事情:

class CSVWrapper {

    private CSVRecord _csvRecord;
    private String _fileName;

    // getters and setters for the above
    // maybe also a constructor?  make them final?  your call

}
然后从
hotestinmanydays()
返回该值,而不是
CSVRecord
。大概是这样的:

CSVRecord currentRow = hottestHourInFile(fr.getCSVParser());
currentRow.setFileName(f.getName());
CSVWrapper csvWrapper = new csvWrapper();
csvWrapper.setCSVRecord(currentRow);
csvWrapper.setFileName(f.getName());
当然,根据需要更改方法签名和返回值


无论如何,一旦它位于
hottestInManyDays()
的返回值上,您就可以在使用以下内容的方法中使用它:

CSVWrapper largest = hottestInManyDays();
System.out.println("hottest temperature on that day was in file " + largest.getFileName() + largest.getCSVRecord().get("TemperatureF") +
           " at " + largest.getCSVRecord().get("TimeEST"));

(注意:如果最末端的位不符合德米特定律,那么可以根据需要扩展包装器以包含传递操作。甚至可以让它与CSVRecord共享一个公共接口,以便在系统中其他地方需要时,可以将其用作替换。),似乎
hotestinmanydays()
需要返回此信息

CSVRecord
是否有此属性?

大概是这样的:

CSVRecord currentRow = hottestHourInFile(fr.getCSVParser());
currentRow.setFileName(f.getName());
CSVWrapper csvWrapper = new csvWrapper();
csvWrapper.setCSVRecord(currentRow);
csvWrapper.setFileName(f.getName());
如果没有,是否可以添加这样的属性?

可能
CSVRecord
没有该属性。但它可以被添加吗

private String _fileName;

public void setFileName(String fileName) {
    this._fileName = fileName;
}

public String getFileName() {
    return this._fileName;
}
如果没有,能否为这两条信息创建包装类?

如果您无法修改
CSVRecord
,并且它没有放置所需信息的位置,请将其包装到一个有位置的类中。像这样简单的事情:

class CSVWrapper {

    private CSVRecord _csvRecord;
    private String _fileName;

    // getters and setters for the above
    // maybe also a constructor?  make them final?  your call

}
然后从
hotestinmanydays()
返回该值,而不是
CSVRecord
。大概是这样的:

CSVRecord currentRow = hottestHourInFile(fr.getCSVParser());
currentRow.setFileName(f.getName());
CSVWrapper csvWrapper = new csvWrapper();
csvWrapper.setCSVRecord(currentRow);
csvWrapper.setFileName(f.getName());
当然,根据需要更改方法签名和返回值


无论如何,一旦它位于
hottestInManyDays()
的返回值上,您就可以在使用以下内容的方法中使用它:

CSVWrapper largest = hottestInManyDays();
System.out.println("hottest temperature on that day was in file " + largest.getFileName() + largest.getCSVRecord().get("TemperatureF") +
           " at " + largest.getCSVRecord().get("TimeEST"));

(注意:如果最末端的位不符合德米特定律,则可以根据需要扩展包装器以包括直通操作。甚至可以让它与
CSVRecord
共享一个公共接口,以便在系统中其他地方需要时,可以将其用作替代品。)必须同时返回CSVRecord和文件。要么是在新组建的班级里。 由于CSVRecord可以转换为映射,请使用新的列名(此处为“文件名”)将文件名添加到映射中

公共地图hottestInManyDays(){
//从我的计算机中选择多个csv文件
DirectoryResource dr=新的DirectoryResource();
CSVRecord largestSoFar=null;
文件fileoflargestofar=null;
//阅读每一行并实现我们刚刚定义的方法
对于(文件f:dr.selectedFiles()){
FileResource fr=新的FileResource(f);
CSVRecord currentRow=hottestHourInFile(fr.getCSVParser());
if(最大值==null){
最大值=当前行;
fileoflargestofar=f;
}
否则{
double currentTemp=double.parseDouble(currentRow.get(“TemperatureF”));
double largestemp=double.parseDouble(largestSoFar.get(“temperatureef”);
//检查当前行的温度是否>最大值
如果(当前温度>最大温度){
//如果是,则将largestSoFar更新为currentRow
最大值=当前行;
fileoflargestofar=f;
}
}
}
Map Map=newhashmap(largestSoFar.toMap());
put(“FILENAME”,fileoflargestofar.getPath());
返回图;
}
映射最大值=hotestinmanydays();
System.out.println(“那天最热的温度在文件中”
+最大的.get(“文件名”)+最大的.get(“温度因子”)+
“在”+最大的。得到(“时间”);

必须同时返回CSVRecord和文件。要么是在新组建的班级里。 由于CSVRecord可以转换为映射,请使用新的列名(此处为“FILEN”)将文件名添加到映射中