我正在学习使用BufferedReader我只尝试了1个变量(a),我收到了正常答案。但是当我放置两个以上的变量(a和b)时,我得到一个错误。
import java.io.*;
public class Frequency {
public static void main(String[] args) throws java.io.IOException
{
// these are the variables that make up the equation (y)
double x , y, i, z, w, a, b, c;
final double t;
InputStreamReader isr =new InputStreamReader(System.in);
BufferedReader br = new BufferedReader (isr);
System.out.println(" Enter the value of a and b to solve for y ");
String s1 ;
s1=br.readLine();
String s2 ;
s2=br.readLine();
// variables of the equation
a =Double.parseDouble(s1);
b= Double.parseDouble(s2);
t= 0.002 * Math.pow(10,-2);
// I separated the equation into different parts
i= 2*3.14* Math.pow(10, 6) * t ;
x = Math.sin(i);
z= 2 * 3.14 *5 * Math.pow(10, 5);
w= Math.cos(z);
c= Math.exp(-a*t);
// equation of y
y= Math.abs(x+w)/c+ 50*b ;
System.out.println(" The output of y is " + y);
}
}
输出 2 3
Exception in thread "main" java.lang.NumberFormatException: For input string: "2 3"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at homeworkcsc201.Frequency.main(Frequency.java:26)
答案 0 :(得分:2)
您可以通过执行s1=br.readLine();
和s2=br.readLine();
来获取变量的文本,这意味着每个变量都显示在单独的行中。但是,您传入的输入是2 3
,这一切都在一行上。
发生异常是因为您尝试将每一行解析为单个数字:a = Double.parseDouble(s1);
和b = Double.parseDouble(s2);
。 parseDouble
要求整个字符串表示单个数字,但您将"2 3"
作为s1
传递,这正是错误消息告诉您的内容。
正确的做法是键入 2 ,按 Enter ,然后按 3 ,再按 Enter 。基本上,将每个数字放在程序所需的单独行上。
答案 1 :(得分:1)
at java.lang.Double.parseDouble(Unknown Source)
堆栈跟踪显示失败在方法parseDouble
中,该方法需要一个十进制数,但是给出了两个。 (2 3
)。
您应该将输入数字放在不同的行上,或者修改程序以在将数字传递给parseDouble
之前拆分数字。
答案 2 :(得分:0)
而不是提供2 3
尝试给予
2
3