我有以下部分代码,其中粒度值是块。当我比较这些值时,它总是显示NO。
System.out.println(granularity);
System.out.println(granularity.equalsIgnoreCase("block")?"YES":"NO");
if(granularity.equalsIgnoreCase("BLOCK")){.....
以下是代码的输出:
block
NO
粒度值从属性文件中获取为
granularity = prop.getProperty("Granularity");
以下是属性文件的快照:
.....Granularity = block
......
有人可以解释为什么这两个字符串不相等吗?
答案 0 :(得分:4)
空白可能会使比较变得混乱。在开始时这样做:
granularity = granularity.trim();
答案 1 :(得分:2)
属性的值在=
所以这个:
Granularity = block
导致值" block"
。将您的文件更改为:
Granularity=block
答案 2 :(得分:1)
以下是代码的输出:
块 NO
如果仔细检查输出,您会在字块后找到空格,因此它是
@ p-j-meisch评论后编辑
您从输入中获得decimal total;
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//check if the current row is a datarow or the footer row
if (e.Row.RowType == DataControlRowType.DataRow)
{
//cast the row back to a datarowview
DataRowView row = e.Row.DataItem as DataRowView;
//add the column value to the totals
total += Convert.ToDecimal(row["Test1"]);
//or by column index
total += Convert.ToDecimal(row[0]);
}
else if (e.Row.RowType == DataControlRowType.Footer)
{
//find a label in the footer with findcontrol
Label label = e.Row.FindControl("Label1") as Label;
//set the total value in the label
label.Text = string.Format("{0:N2}", total);
//set the footer value by cell index instead of a label
e.Row.Cells[1].Text = string.Format("{0:N2}", total);
}
}
。"block "
。当您将其与" block"
进行比较时,您会得到错误。
添加此行"block"
。
答案 3 :(得分:0)
最佳做法是每次在代码中trim
字符串,特别是当它被用作用户的输入时。
granularity.trim().equalsIgnoreCase("block")...
或者将其存储在granularity
String granularity = someInputString.trim();