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()
而且字段集实际上不需要存在。此方法将在不首先调用其他方法的情况下工作。