==到目前为止,我一直在我的程序中使用运算符来比较我的所有字符串.但是,我遇到了一个错误,将其中一个更改为了.equals(),并修复了该错误.
是==坏?什么时候应该不应该使用它?有什么不同?
这是我的代码,Eclipse没有显示任何错误,程序工作正常,但它根本不能完全按照我的意愿:)
View image_view_danger_rate = (ImageView) findViewById(R.id.origin);
View image_view_origin = (ImageView) findViewById(R.id.danger_rate);
String entry_tag = (String) descriptionResultView.findViewById(resID).getTag();
String dangerous = "dangerous";
String not_dangerous = "not_dangerous";
if ( entry_tag == dangerous) {
image_view_danger_rate.setBackgroundResource(R.drawable.attention);
}else if ( entry_tag == not_dangerous) {
image_view_danger_rate.setBackgroundResource(R.drawable.its_ok);
image_view_origin.setBackgroundResource(R.drawable.artificial);
}
Run Code Online (Sandbox Code Playgroud)
应用程序应在屏幕上弹出两个图像,具体取决于存储在xml文件中的标记.因此,如果标签显示"危险",那么应该显示"注意" - 图像.如果标签显示"not_dangerous",则应该有"its_ok"-image.
现在,在没有if-comparison的情况下显示图像非常有效.
如果我将标签打印为字符串,它可以正常打印,它会正确打印"危险"或"非危险",具体取决于标签.
但如果有如上所示的if-comparison,则没有任何反应,也没有显示图像.
请任何人帮忙!! =)
可能重复:
如何比较Java中的字符串?
Java字符串比较?
import java.util.*;
public class whatever
{
public static void main(String[] args)
{
Scanner test = new Scanner(System.in);
System.out.println("Input: ");
String name = test.nextLine();
if (name == "Win")
{
System.out.println("Working!");
}
else
{
System.out.println("Something is wrong...");
}
System.out.println("Value is: " + name);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码非常明显.我假设==只能用于数字?我想要"工作!" 打印.
我正在编写一个应该关闭控制台的程序,如果用户输入字符串"end".程序总是执行else循环,即使用户输入"end".我想知道为什么程序没有进入if部分循环和关闭.
Scanner scan = new Scanner(System.in);
while(true)
{
String num = scan.nextLine();
if(num == "end")
{
System.exit(0);
}
else
{
System.out.println("hi");
}
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
Java字符串比较?
我遇到了以下问题,我有一个名为" lang " 的对象,是一个输出字符串的方法LanguageDetector.detect()的结果.
lang = LanguageDetector.detect();
Run Code Online (Sandbox Code Playgroud)
所以我想检查语言是否是英语,所以我正在检查,
lang == "en"
Run Code Online (Sandbox Code Playgroud)
以下屏幕是我的调试屏幕,我的lang显示"en",但是我的lang =="en"显示为false而lang.toString()=="en"为false,是否有人遇到以下问题并且有一个可能的方案?

可能重复:
Java字符串比较?
我试图这样做:
boolean exit = false;
while(exit==false && convStoreIndex<convStoreLength) {
if(conversionStore[convStoreIndex].getInUnit()==inUnit) {
indexCount++;
exit=true;
}
convStoreIndex++;
}
Run Code Online (Sandbox Code Playgroud)
但if-condition永远不会成功,即使两个字符串相同(在调试器中检查过).所以我添加了几行:
boolean exit = false;
while(exit==false && convStoreIndex<convStoreLength) {
Log.v("conversionStore["+String.valueOf(convStoreIndex)+"]", conversionStore[convStoreIndex].getInUnit()+"|"+inUnit);
String cs = conversionStore[convStoreIndex].getInUnit();
String iu = inUnit;
Log.v("cs", cs);
Log.v("iu", iu);
Log.v("Ergebnis(cs==iu)", String.valueOf(cs==iu));
if(conversionStore[convStoreIndex].getInUnit()==inUnit) {
indexCount++;
exit=true;
}
convStoreIndex++;
}
Run Code Online (Sandbox Code Playgroud)
这是LogCat的摘录:
09-15 11:07:14.525: VERBOSE/cs(585): kg
09-15 11:07:16.148: VERBOSE/iu(585): kg
09-15 11:07:17.687: VERBOSE/Ergebnis(cs==iu)(585): false
Run Code Online (Sandbox Code Playgroud)
转换类存储:
class ConversionStore {
private String inUnit;
[...]
public String getInUnit() {
return inUnit;
}
}
Run Code Online (Sandbox Code Playgroud)
谁会变得疯狂,java还是我?
我正在使用JSP中的Java代码,我正在尝试比较字符串,我遇到了问题.
我宣布了两个字符串
s1 = "din";
s2 = "din";
Run Code Online (Sandbox Code Playgroud)
但是,if (s1 == s2)永远不会执行.有人能帮我吗?
这是我的代码:
Log.d("inf", loader);
if (loader == "Klasse"){
Log.d("inf", "Klasse yes");
OPTS = new String[] { //Something };
} else {
Log.d("inf", "Klasse no");
OPTS = new String[] { //Something };
}
Run Code Online (Sandbox Code Playgroud)
在第一行中,输出正好是"Klasse",但下一个输出是每次"Klasse no".加载器String设置如下:
String loader = "";
Bundle exta = getIntent().getExtras();
if(exta !=null) {
try {
json = new JSONObject(exta.getString("json"));
loader = exta.getString("order");
} catch (JSONException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
你们有什么想法错了吗?
可能重复:
Java字符串比较?
我对Java很新,并对我的if/else语句无法执行的原因有疑问.该方法的目标是基于从文本文件读入的符号加载2D阵列.符号将转换为数字以填充数组.据我所知,用于确定if或if/else语句是否应该执行的布尔逻辑是合理的,但它们都没有.谢谢您的帮助.
码:
public void loadText(Scanner sc) {
for (int row = 1; row <= grid.length; row++) {
for (int col = 1; col <= grid[row].length; col++) {
String x = sc.next();
if ((x == " ") && (row <= 10)) {
grid[row][col] = 0;
} else if ((x == "*") && (row <= 10)) {
grid[row][col] = 1;
} else if ((x == "$") && (row <= 10)) {
Arrays.fill(grid[row], 0);
} else if (row >= 11) { …Run Code Online (Sandbox Code Playgroud) 我不理解下面的输出:
System.out.println(s1.equals(s2)+"a"); ->truea
System.out.println(s1==s2+"a"); ->false
Run Code Online (Sandbox Code Playgroud)
其中s1和s2被声明为相同的字符串"abc"即 String s1="abc"; String s2="abc";
private void refineWords() {
for(String word : words){
Log.i("word", word);
if (word == "s" || word == "t" || word == "am" || word == "is" || word == "are" || word == "was" || word == "were" || word == "has" ||
word == "have" || word == "been" || word == "will" || word == "be" || word == "would" || word == "should" || word == "shall" ||
word == "must" || word == "can" || word …Run Code Online (Sandbox Code Playgroud)