我有这个代码,文本字段中的输入是50,所以它的输出应该是25,
但是有一个错误,因为没有输出
button_1.addActionListener(new ActionListener() {
String tfg = textField.getText().toString();
String tfc = textField.getText();
public void actionPerformed(ActionEvent e) {
if(textField.getText().toString().equals("0") ||
textField.getText().toString().equals("") ||
textField.getText().toString().equals(" ") ||
textField.getText().toString().matches("[a-zA-Z]+")) {
JOptionPane.showMessageDialog(Cow.this,
"Tree Amount Should Be 1 or More",
"Invalid Tree Amount",
JOptionPane.ERROR_MESSAGE);
}
if(!tfg.equals("0")) {
try {
int tfgg = Integer.parseInt(tfc);
int trcs = tfgg * 1;
double trcp = 1 / 2;
int trcc = (int) trcp * trcs;
System.out.println(new Integer(trcc).toString());
} catch (NumberFormatException se) {
}
}
}
});
我尝试从我的php转换为该代码,这是我的PHP代码:
$doorSeed = $mount * 1;
$doorPrice = 1 / 2;
$doorConvert = $doorPrice * $doorSeed;
echo "Treasure Chest Seed = ".$doorSeed." Price : ".$doorConvert." World Lock <br>";
答案 0 :(得分:2)
int trcc = (int) trcp * trcs;
试试这个
int trcc = (int) (trcp * trcs);
您需要将complete expression
[(trcp * trcs)
]而不仅仅是第一个变量trcp
投射到int
。表达式trcs
中的另一个变量属于double
类型,因此表达式的结果变为double
。这就是你施放完整表达式的原因。因此,您的最终结果将为int
int tfgg = Integer.parseInt(tfc.trim()); // tfc = 4; tfgg = 4;
int trcs = tfgg * 1; // trcs = 4 * 1 = 5;
double trcp = 1.0 / 2; // trcp = 0.5;
int trcc = (int) (trcp * trcs); // trcc = (0.5 * 5) = (2.5) = 2;
System.out.println(trcc); // 2;
double trcp = 1.0 / 2;
此处至少将一个值设为double
,因此表达式将按照@tunaki的建议评估为double
。
此外,您在代码int trcs = tfgg * 1;
中不需要此语句。
像这样使用:
String tfg ;
String tfc ;
public void actionPerformed(ActionEvent e) {
tfg = textField.getText();
tfc = textField.getText();
if(textField.getText().equals("0") || textField.getText().equals("") || textField.getText().equals(" ") || textField.getText().matches("[a-zA-Z]+")) {
JOptionPane.showMessageDialog(Cow.this,
"Tree Amount Should Be 1 or More",
"Invalid Tree Amount",
JOptionPane.ERROR_MESSAGE);
}
if(!tfg.equals("0")) {
try {
int tfgg = Integer.parseInt(tfc.trim()); // tfc = 4;
int trcs = tfgg; // trcs = 4 * 1 = 5
double trcp = 1.0 / 2; // trcp = 0.5
int trcc = (int) (trcp * trcs); // trcc = (0.5 * 5) = (2.5) = 2
System.out.println("HI: "+trcc);
} catch (NumberFormatException ignored) {
}
答案 1 :(得分:1)
你的问题就在这一行:
trcp = 0.5
不导致trcp = 0.0
但double trcp = 1.0 / 2;
,因为您要划分整数值(因此使用整数除法)。
您应该使用以下代码:
new Integer(trcc).toString()
使用双打强制分裂。
其他评论:
String.valueOf(trcc)
应替换为int trcs = tfgg * 1;
。rake routes
?答案 2 :(得分:0)
基本上你有这个(int)0.5 = 0
。
在你的情况下,trcp = 0.5
并且是双倍的,所以当它被转换为整数时,结果为0。
当你执行(int)a + b
时,优先使用括号的真实操作是:((int)a)+(b)
,所以你需要的是以下内容:
int trcc = (int) (trcp * trcs);
而不是以下内容:
int trcc = (int) trcp * trcs;