这里不允许java'void'类型

时间:2011-11-28 14:59:34

标签: java

我收到此错误:

--------------------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;
        } 
}

有什么问题?

4 个答案:

答案 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的字符串中插入一些东西。