无论输入是什么,只有if ... else梯形图正在执行。为什么会这样?

时间:2014-11-16 05:10:58

标签: java if-statement file-handling

以下是一些代码,用于按in类<{1}}类的对象Scanner升序或降序对文件内容进行排序

public void sortFile(String fileName)throws IOException
{
    FileReader fin=new FileReader("C:\\File Handling\\"+fileName+".txt");
    BufferedReader bin=new BufferedReader(fin);

    String[] str=new String[100];

    int i=0;
    while((str[i]=bin.readLine())!=null)
        i++;

    Comparator<String> c=Collections.reverseOrder();

    System.out.println("\nIf you want to sort in descending order, enter A");
    System.out.println("If you want to sort in ascending order, enter D");
    System.out.println("Using any other characters or strings will produce an error and exit his method\n");

    String opt=in.next();
    if(opt=="A"||opt=="a")
        Arrays.sort(str,0,i);
    else if(opt=="D"||opt=="d")
        Arrays.sort(str,0,i,c);
    else
    {
        System.out.println("Wrong option");
        main();
    }

    FileWriter fout=new FileWriter("C:\\File Handling\\"+fileName+".txt");
    BufferedWriter bout=new BufferedWriter(fout);
    PrintWriter pout=new PrintWriter(bout);

    for(i=0;i<str.length;i++)
    {
        if(str[i]!=null)
            pout.println(str[i]);
    }

    pout.flush();
    pout.close();
}

但是在执行此代码时,无论我为变量opt分配什么值,我总是会收到“错误选项”的消息并被重定向到main()方法。

为什么会这样?

是否有人有任何其他建议可以在任何其他方面改进此代码?

1 个答案:

答案 0 :(得分:1)

if(opt.equals("A")||optopt.equals("a")){...}
else if(opt.equals("D")||opt.equals("d")){...}
else{...}

String是对象,因此等于两个字符串所需的equals方法。

找一篇好文章 - What’s the difference between equals() and ==?