Java if-else嵌套在循环中

Java if-else嵌套在循环中,java,android,Java,Android,我在下面的代码中遇到了一个奇怪的Java行为(它列出了包含1个子文件夹、2.mp4文件和1.mp3文件的文件夹)。我正在尝试为视频和其他文件指定不同的图标: private void fill(File f) { File[]dirs = f.listFiles(); this.setTitle("Current Dir: "+f.getName()); List<Item> dir = new ArrayList<Item>();

我在下面的代码中遇到了一个奇怪的Java行为(它列出了包含1个子文件夹、2.mp4文件和1.mp3文件的文件夹)。我正在尝试为视频和其他文件指定不同的图标:

    private void fill(File f)
{
    File[]dirs = f.listFiles();
     this.setTitle("Current Dir: "+f.getName());
     List<Item> dir = new ArrayList<Item>();
     List<Item> fls = new ArrayList<Item>();
     try{
         for(File ff: dirs)
         { 
            Date lastModDate = new Date(ff.lastModified());
            DateFormat formater = DateFormat.getDateTimeInstance();
            String date_modify = formater.format(lastModDate);
            if(ff.isDirectory()){


                File[] fbuf = ff.listFiles();
                int buf = 0;
                if(fbuf != null){ 
                    buf = fbuf.length;
                } 
                else buf = 0; 
                String num_item = String.valueOf(buf);
                if(buf == 0) num_item = num_item + " item";
                else num_item = num_item + " items";

                //String formated = lastModDate.toString();
                dir.add(new Item(ff.getName(),num_item,date_modify,ff.getAbsolutePath(),"directory_icon")); 
            }
            else
            {
                String ext = "";

                ext=getFileExtension(ff);
                Log.d("Zox","'"+ext+"'");
                if(ext!="mp4"){
                    Log.d("Zox","'"+ext+"'");
                    Log.d("Zox","FU");
                }
                else {
                    fls.add(new Item(ff.getName(), ff.length() + " Byte", date_modify, ff.getAbsolutePath(), "file_icon"));
                }
            }
         }

条件和动作都是无稽之谈,只是为了调试。为什么Java不能识别字符串匹配?

您正在使用
=
运算符,用于检查
字符串的不相等性。
你应该使用

if(!ext.equals("mp4")){
                Log.d("Zox","'"+ext+"'");
                Log.d("Zox","FU");
            }
  • 不应使用==运算符进行字符串匹配
  • 始终使用.equals或.equalIgnoreCase
ext.equals(“mp4”)解决问题!非常感谢,贝斯特!
if(!ext.equals("mp4")){
                Log.d("Zox","'"+ext+"'");
                Log.d("Zox","FU");
            }