Java 双精度列表,打印字符串
我有一个气象数据的值列表,写列表的人在没有值可报告时使用了9999值。我导入了文本文件,并使用以下代码获取数据并对其进行编辑:Java 双精度列表,打印字符串,java,type-conversion,Java,Type Conversion,我有一个气象数据的值列表,写列表的人在没有值可报告时使用了9999值。我导入了文本文件,并使用以下代码获取数据并对其进行编辑: import java.io.*; import java.util.*; public class weatherData { public static void main(String[] args) throws FileNotFoundException{ Scanner input = new Scanner(new File("
import java.io.*;
import java.util.*;
public class weatherData {
public static void main(String[] args)
throws FileNotFoundException{
Scanner input = new Scanner(new File("PortlandWeather2011.txt"));
processData(input);
}
public static void processData (Scanner stats){
String head = stats.nextLine();
String head2 = stats.nextLine();
System.out.println(head);
System.out.println(head2);
while(stats.hasNextLine()){
String dataLine = stats.nextLine();
Scanner dataScan = new Scanner(dataLine);
String station = null;
String date = null;
double prcp = 0;
double snow = 0;
double snwd = 0;
double tmax = 0;
double tmin = 0;
while(dataScan.hasNext()){
station = dataScan.next();
date = dataScan.next();
prcp = dataScan.nextInt();
snow = dataScan.nextInt();
snwd = dataScan.nextInt();
tmax = dataScan.nextInt();
tmin = dataScan.nextInt();
System.out.printf("%17s %10s %8.1f %8.1f %8.1f %8.1f %8.1f \n", station, date(date), prcp(prcp), inch(snow), inch(snwd), temp(tmax), temp(tmin));
}
}
}
public static String date(String theDate){
String dateData = theDate;
String a = dateData.substring(4,6);
String b = dateData.substring(6,8);
String c = dateData.substring(0,4);
String finalDate = a + "/" + b + "/" + c;
return finalDate;
}
public static double prcp(double thePrcp){
double a = (thePrcp * 0.1) / 25.4;
return a;
}
public static double inch(double theInch){
double a = theInch / 25.4;
if(theInch == 9999){
a = 9999;
}
return a;
}
public static double temp(double theTemp){
double a = ((0.10 * theTemp) * 9/5 + 32);
return a;
}
}
我遇到的问题是获取这些值并检查9999出现的所有时间,然后打印出来--。我不知道如何输入double类型的值,然后打印出一个字符串
此代码获取值并检查值9999,但不执行任何操作。这就是我的问题所在:
public static double inch(double theInch){
double a = theInch / 25.4;
if(theInch == 9999){
a = "----";
}
return a;
}
如果我在这个问题上放了太多的信息,我很抱歉。如果你需要我澄清,就问吧。谢谢你的帮助 您需要修改inch函数以返回字符串,而不是double
public static String inch(double theInch){
if(theInch == 9999){
return "----";
}
return Double.toString(theInch/25.4);
}
我认为第一个问题可能是,您从扫描仪读取的所有值都是int而不是double。例如,根据System.out.println语句,我认为您实际上应该读取以下数据类型
prcp = dataScan.nextDouble();
snow = dataScan.nextDouble();
snwd = dataScan.nextDouble();
tmax = dataScan.nextDouble();
tmin = dataScan.nextDouble();
此外,鉴于inch方法只在System.out.println行中使用,您需要将其更改为字符串作为返回类型
public String inch(double theInch){
if (theInch == 9999){
return "----";
}
return ""+(theInch/25.4);
}
@用户962206嗯。。。希望您知道最后一段代码中的错误。如果你不。。。好谢谢,不知什么原因,我忘了打字回答得好!