我收到此错误:
--------------------Configuration: <Default>--------------------
C:\Documents and Settings\800508\Desktop\Chpt 8\Labs08\Lab08MATH02\Lab08MATH02st.java:20: 'void' type not allowed here
JOptionPane.showMessageDialog(null,r.getRational() + " equals " + r.getDec() + " and reduces to " + r.reduce());
^
从这段代码:
// Lab08MATH02st.java
// The Rational Class Program I
// This is the student, starting version of the Lab08MATH02 assignment.
import javax.swing.JOptionPane;
public class Lab08MATH02st
{
public static void main (String args[])
{
String strNbr1 = JOptionPane.showInputDialog("Enter Numerator 1");
String strNbr2 = JOptionPane.showInputDialog("Enter Denominator 2");
int num = Integer.parseInt(strNbr1);
int den = Integer.parseInt(strNbr2);
Rational r = new Rational(num,den);
JOptionPane.showMessageDialog(null,r.getRational() + " equals " + r.getDec() + " and reduces to " + r.reduce());
System.exit(0);
}
}
class Rational
{
int num;
int den;
int n1;
int n2;
int gcf;
public Rational(int n, int d)
{
num = n;
den = d;
}
// Rational
// getNum
// getDen
// getDecimal
public double getDec()
{
return (double)num/den;
}
// getRational
public String getRational()
{
return num + "/" + den;
}
// getOriginal
// reduce
public void reduce()
{
num = num / 2;
den = den / 2;
}
private int getGCF(int n1,int n2)
{
int rem = 0;
int gcf = 0;
do
{
rem = n1 % n2;
if (rem == 0)
gcf = n2;
else
{
n1 = n2;
n2 = rem;
}
}
while (rem != 0);
return gcf;
}
}
有什么问题?
答案 0 :(得分:9)
函数reduce
具有void
返回类型。并且void
无法附加到字符串
该函数必须返回一些可以表示为String的值,以便将其附加到字符串。如果返回void
,编译器和运行时环境不知道要附加到字符串的内容。
答案 1 :(得分:1)
您不能使用以下函数返回的String追加void数据类型...
public void reduce()
{
num = num / 2;
den = den / 2;
}
答案 2 :(得分:0)
这是因为你的r.reduce()函数是一个void返回类型,所以你不能将它附加到字符串。它需要返回一些价值。而且,我不是肯定的,但你正在添加字符串和数字,所以你可能需要在showMessageDialog调用中将数字返回值转换为字符串。
答案 3 :(得分:0)
这是因为你在字符串中使用了+ r.reduce()。你不能在返回void的字符串中插入一些东西。