【问题标题】:Using scanner to read string from text file and then print out使用扫描仪从文本文件中读取字符串然后打印出来
【发布时间】:2014-04-22 12:53:48
【问题描述】:

我有一个包含字符串 - "!- =========== ALL OBJECTS IN CLASS: FENESTRATIONSURFACE:DETAILED ===========" 的文本文件,如下面的代码所示。如果文本文件包含此字符串,我需要从文本文件中读取它,然后再次打印出来。问题是我无法弄清楚为什么我的代码没有打印出来。

任何帮助将不胜感激!

public class Main {

    public static void main(String[] args) throws FileNotFoundException {

        File file = new File("C:/Users/Anton/Pictures/1 x geotransform0.5m shading.txt");

        Scanner scan = new Scanner(file);

            while(scan.hasNext()){
                String str = scan.next();

                if(str == "!-   ===========  ALL OBJECTS IN CLASS: FENESTRATIONSURFACE:DETAILED ==========="){
                    System.out.print(str);
                }
            }
            scan.close();
        }   
}

【问题讨论】:

  • 在使用调试器时,当您到达if 语句时,str 是什么?
  • 使用 String 对象的 equals() 方法 ==.
  • 这看起来很糟糕str == 。看看How do I compare strings in Java?next() 也只会返回一个单词。您可能需要使用nextLine()

标签: java java.util.scanner


【解决方案1】:

使用下面的代码,扫描仪 next 只给出一个单词,使用 nextLine 代替读取整行..

Scanner scan = new Scanner(file);
            String str1 = scan.nextLine();

                if(str1.equals("!-   ===========  ALL OBJECTS IN CLASS: FENESTRATIONSURFACE:DETAILED ==========="))
                    System.out.println(str1);
                scan.close();

【讨论】:

  • 谢谢你解决了这个问题,我对 Java 还很陌生,所以我只是学习所有这些来龙去脉!
【解决方案2】:

使用这个

if(str.equals("!-   ===========  ALL OBJECTS IN CLASS: FENESTRATIONSURFACE:DETAILED ===========")){
            System.out.print(str);
        }

而不是

if(str == "!-   ===========  ALL OBJECTS IN CLASS: FENESTRATIONSURFACE:DETAILED ==========="){
            System.out.print(str);
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2016-03-02
    • 1970-01-01
    相关资源
    最近更新 更多