Java传递int值/数据

Java传递int值/数据,java,integer,Java,Integer,有人能看到我的代码有什么问题吗?我从计算返回中得到0 在第二个类上创建一个小计算,并将结果数据传递给主类,然后打印 主类 package javaapplication3; public class JavaApplication3 { public static void main(String[] args) { cal bla = new cal(); bla.getRatio(); String dCount = Strin

有人能看到我的代码有什么问题吗?我从计算返回中得到
0

在第二个类上创建一个小计算,并将结果数据传递给主类,然后打印

主类

package javaapplication3;

public class JavaApplication3 {

    public static void main(String[] args) {

        cal bla = new cal();

        bla.getRatio();
        String dCount = String.valueOf(bla.getRatio());

        System.out.print(dCount);

    }
}
package javaapplication3;

public class cal {

    public int total = 11;
    public int count = 2508;
    public int calRatio;

    public void caln () {

        calRatio = count / total;

        System.out.print(calRatio);

    }

    public int getRatio () {
        return (calRatio);
    }

}
二等舱

package javaapplication3;

public class JavaApplication3 {

    public static void main(String[] args) {

        cal bla = new cal();

        bla.getRatio();
        String dCount = String.valueOf(bla.getRatio());

        System.out.print(dCount);

    }
}
package javaapplication3;

public class cal {

    public int total = 11;
    public int count = 2508;
    public int calRatio;

    public void caln () {

        calRatio = count / total;

        System.out.print(calRatio);

    }

    public int getRatio () {
        return (calRatio);
    }

}

PS:将bla.getRatio更改为bla.caln();工作。我想我把其他项目搞混了。感谢大家的输入。

您正在进行整数除法,它将结果截断为整数

您需要将任一操作数强制转换为双精度

我从计算返回值中得到0

这是你应该做的
11/2508
进行整数除法,除法值为
0

如果你想要一个非零的,我建议换一个

    public double getAverage () {
        return (double) total / count;
    }
通常你用总数除以计数得到平均数

bla.getRatio();
String dCount = String.valueOf(bla.getRatio());
您从未调用caln()-方法,因此calRatio永远为0

也许你的意思是:

bla.caln();
String dCount = String.valueOf(bla.getRatio());
再加上,你试着除以整数。试试这个:

public class cal {

    public int total = 11;
    public int count = 2508;
    public double calRatio;

    public void caln () {

        calRatio = count / total;

        System.out.print(calRatio);

    }

    public double getRatio () {
        return calRatio;
    }

}

它将始终返回0,因为您返回的是
int
类型。除法的结果总是一些浮点值,因此需要将其存储为浮点值,然后返回

public class cal {
    public int total = 11;
    public int count = 2508;
    public double calRatio;
    public void caln() {
        calRatio = (double)count / (double)total;
        System.out.print(calRatio);
    }
}
您从未调用“setter”函数caln(),因此从未设置
calRatio
。因此,对于
calRatio

它返回0,请尝试以下操作:

public class cal {

    public int total = 11;
    public int count = 2508;
    public double calRatio;

    public void caln () {

        calRatio = count / total;

        System.out.print(calRatio);

    }

    public double getRatio () {
        return calRatio;
    }

}
public static void main(String[] args) {

        cal bla = new cal();
        bla.caln();
        String dCount = String.valueOf(bla.getRatio());

        System.out.print(dCount);

    }
替换

public void caln () {

    calRatio = count / total;

    System.out.print(calRatio);

}
由此

public cal () {

    calRatio = count / total;

    System.out.print(calRatio);

}

事实上,他从来没有调用“caln”,我认为这是一个构造函数(也许?),所以没有计算发生。“calRatio”被初始化为0,它仍然是这样。将int改为double,仍然得到0.0?除了答案之外,您还需要了解,特别是如何命名类/公共方法/etc。删除了
[pass by reference]
作为a)Java不支持pass by reference,b)它与问题无关。作为一般规则,你永远不应该以“代码出了什么问题?”开始提问。对不起,伙计们,我下次会更具体、更准确。不仅如此,他的方法是整数除法。@TimoteTheCodeMonkee正确,但在这种情况下,count/total的结果等于228,如果他的值不再是硬编码的?教好编程实践比教黑客解决方案更好。:)对不起,因为除法是2508/11=228,所以被否决了。我怀疑OP的计数和总数是错误的固定的。尽管输入错误很小,但概念是一样的。但这并不能解决他的问题,因为他实际上并没有调用setter函数。OP也从来没有调用setter函数
caln()
,所以除了进行双除法外,他还需要更改它。@NominSim我假设
caln()
而且字段集实际上不需要存在。此方法将在不首先调用其他方法的情况下工作。