简体   繁体   中英

java 'void' type not allowed here

I get this error:

--------------------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());
                                                                                 ^

From this code:

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

What's the problem?

The function reduce has void return type. And void cannot be appended to a String

The function must return some value that can be represented as a String in order to append it to a string. If you return void the compiler and the runtime environment don't know what to append to the string.

You can not append void datatype with String which is returned by the following function...

public void reduce()
{
    num = num / 2;
    den = den / 2;
}

It's because your r.reduce() function is a void return type so you can't append it to the string. It needs to return some value. And also, I'm not positive but you are adding strings and numbers so you may need to convert the numeric return values to string in your showMessageDialog call.

It is because you use + r.reduce() inserted in your string. You cant insert something in a string that returns void.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM