为什么我的搜索方法不起作用?JAVA

为什么我的搜索方法不起作用?JAVA,java,search,Java,Search,我正在制作一个程序,计算20位CEO的欠税。我试图添加一个使用线性搜索的搜索函数,但每次都会显示“xxx未找到”。有人帮我找出我的代码有什么问题吗。搜索方法位于代码的末尾。请记住我是初学者。Thx import java.io.*; import javax.swing.*; // The "CEO" class. public class CEO { public static void main (String[] args) throws IOException {

我正在制作一个程序,计算20位CEO的欠税。我试图添加一个使用线性搜索的搜索函数,但每次都会显示“xxx未找到”。有人帮我找出我的代码有什么问题吗。搜索方法位于代码的末尾。请记住我是初学者。Thx

import java.io.*;
import javax.swing.*;
// The "CEO" class.
public class CEO
{
    public static void main (String[] args) throws IOException
    {
    BufferedReader X = new BufferedReader (new FileReader    ("G://CEO.txt"));

    FileWriter outFile = new FileWriter ("taxinfo.txt");
    PrintWriter Y = new PrintWriter (outFile);

    String line;
    double taxrate;
    for (int i = 0 ; i < 20 ; i++)
    {

        line = X.readLine ();
        String[] textarray = line.split (",");


        String name = textarray [0];

        String company = textarray [1];

        String salary = textarray [2];

        ///////////////////////////////////////////

        String namear[] = name.split (",");

        String companyar[] = company.split (",");

        String salaryar[] = salary.split (",");

        String salary2 = String.valueOf (salaryar [0]);

        double salary3 = Double.parseDouble (salary2);


        //////////////////////////////////////////

        if (salary3 <= 10000000)
        {
            taxrate = 40;
        }
        else
        {
            taxrate = 53;
        }

        calcTax (salary3, taxrate);

        Y.println (namear[0]);
        Y.println (companyar[0]);
        Y.println ((long) salary3);
        Y.println (calcTax (salary3, taxrate));
        Y.println ("");
        System.out.println (namear[0] + ", " + companyar[0] + ", $" + (long)salary3 + ", $" + (calcTax (salary3, taxrate)));

        if (i == 19)
        {
            String findMe;

            findMe = JOptionPane.showInputDialog ("Enter name to search");

            int loc;
            loc = findName (findMe, namear);
            if (loc >= 0)
            {
                JOptionPane.showMessageDialog (null, namear[loc]);
            }
            else
            {
                JOptionPane.showMessageDialog (null, findMe + " not found");
            }
        }
    }
    Y.close ();

    JOptionPane.showMessageDialog (null, "Records stored in file");

    //////////////////////////////////////////////////////////////////////////



} // main method


/////////////////////////////////////////////////////////////////////////////////////////
public static double calcTax (double salary, double taxrate)
{
    double taxowed = 0;

    taxowed = (salary * taxrate) / 100;

    return taxowed;
}


/////////////////////////////////////////////////////////////////////////////

public static int findName (String nameToFind, String array[])
{
    int place = -1;

    for (int i = 0 ; i < array.length ; i++)
    {
        if (nameToFind.equalsIgnoreCase (array [i]) == true)
        {
            place = i;
        }
    }
    return place;
}
} // CEO class
import java.io.*;
导入javax.swing.*;
//“CEO”班。
公共类首席执行官
{
公共静态void main(字符串[]args)引发IOException
{
BufferedReader X=新的BufferedReader(新文件阅读器(“G://CEO.txt”);
FileWriter outFile=新的FileWriter(“taxinfo.txt”);
PrintWriter Y=新的PrintWriter(输出文件);
弦线;
双重税率;
对于(int i=0;i<20;i++)
{
line=X.readLine();
字符串[]textarray=line.split(“,”);
字符串名称=文本数组[0];
字符串company=textary[1];
字符串salary=textary[2];
///////////////////////////////////////////
字符串namear[]=name.split(“,”);
字符串companyar[]=company.split(“,”);
字符串salaryar[]=salary.split(“,”);
String salary2=String.valueOf(salaryar[0]);
双薪3=double.parseDouble(薪水2);
//////////////////////////////////////////
如果(薪水3=0)
{
JOptionPane.showMessageDialog(null,namear[loc]);
}
其他的
{
JOptionPane.showMessageDialog(null,findMe+“未找到”);
}
}
}
Y.close();
JOptionPane.showMessageDialog(null,“存储在文件中的记录”);
//////////////////////////////////////////////////////////////////////////
}//主方法
/////////////////////////////////////////////////////////////////////////////////////////
公共静态双倍计算(双倍工资,双倍税率)
{
双重征税=0;
所欠税款=(工资*税率)/100;
退还所欠税款;
}
/////////////////////////////////////////////////////////////////////////////
公共静态int-findName(字符串名称查找,字符串数组[])
{
int place=-1;
for(int i=0;i
您正试图用字符串做一些不可能的事情

String[]textary=line.split(“,”);
...
字符串名称=文本数组[0];
...

字符串namear[]=name.split(“,”)好的,伙计们,我知道了

import java.io.*;
import javax.swing.*;
// The "CEO" class.
public class CEO
{
public static void main (String[] args) throws IOException
{
    BufferedReader X = new BufferedReader (new FileReader ("D://CEO.txt"));

    FileWriter outFile = new FileWriter ("taxinfo.txt");
    PrintWriter Y = new PrintWriter (outFile);

    String line;
    double taxrate;
    String salary2;
    double salary3;

    String names[];
    String cnames[];
    String salary[];
    String taxesowedstr[];

    names = new String [20];  
    cnames = new String [20];
    salary = new String [20];
    taxesowedstr = new String [20];

    for (int k = 0 ; k < names.length ; k++)
    {
        line = X.readLine ();
        String[] textarray = line.split (",");
        names [k] = textarray [0];
        cnames [k] = textarray [1];
        salary [k] = textarray [2];
        salary2 = String.valueOf (salary [k]);
        salary3 = Double.parseDouble (salary2);

        if (salary3 <= 10000000)
        {
            taxrate = 40;
        }
        else
        {
            taxrate = 53;
        }


        Y.println (names [k]);
        Y.println (cnames [k]);
        Y.println ((long) salary3);
        Y.println (calcTax (salary3, taxrate));
        Y.println ("");
        System.out.println (names [k] + ", " + cnames [k] + ", $" + (long) salary3 + ", $" + (calcTax (salary3, taxrate)));

        double taxes = calcTax (salary3, taxrate);

        taxesowedstr [k] = String.valueOf (taxes);

        if (k == 19)
        {
                JOptionPane.showMessageDialog (null, "Records stored in file");

            String findMe;

            findMe = JOptionPane.showInputDialog ("Enter name to search");

            int loc;
            loc = findName (findMe, names);
            if (loc >= 0)
            {
                JOptionPane.showMessageDialog (null, names [loc] + ", " + cnames [loc] + ", $" + salary [loc] + ", $" + taxesowedstr [loc]);
            }
            else
            {
                JOptionPane.showMessageDialog (null, findMe + " not found");
            }
        }

    }

    Y.close ();

} // main method


/////////////////////////////////////////////////////////////////////////////////////////
public static double calcTax (double salary, double taxrate)
{
    double taxowed = 0;

    taxowed = (salary * taxrate) / 100;

    return taxowed;
}


/////////////////////////////////////////////////////////////////////////////

public static int findName (String nameToFind, String array[])
{
    int place = -1;

    for (int i = 0 ; i < array.length ; i++)
    {
        if (nameToFind.equalsIgnoreCase (array [i]) == true)
        {
            place = i;
        }
    }
    return place;
}
} // CEO class
import java.io.*;
导入javax.swing.*;
//“CEO”班。
公共类首席执行官
{
公共静态void main(字符串[]args)引发IOException
{
BufferedReader X=新的BufferedReader(新的文件阅读器(“D://CEO.txt”);
FileWriter outFile=新的FileWriter(“taxinfo.txt”);
PrintWriter Y=新的PrintWriter(输出文件);
弦线;
双重税率;
固定工资2;
双薪3;
字符串名[];
字符串cnames[];
字符串工资[];
字符串taxedsowedstr[];
名称=新字符串[20];
cnames=新字符串[20];
工资=新字符串[20];
taxesowedstr=新字符串[20];
for(int k=0;k
代码在我看来还行。我认为问题在于输入,可能是其中一个名字拼错了。我认为你应该在调试器中找出这个问题。在询问之前,一定要尝试使用调试器!(事实上,我看到了一些看起来不正确的东西:我认为
namear
没有正确初始化。但是,如果您的输入数据与我预期的不同,可能是这样,因此再次返回到调试器,以确保
findName
中的所有值都与您预期的值相同。)如果这是问题,OP应该能够通过在调试器中运行上述代码来快速确认它。是时候让OP学会使用它了!如果任何人都能启动调试器,那将是一个完美的世界。我自己在开始编程的几年后才能够做到这一点,所以我理解为什么有些人可能无法做到。这就是为什么我有时会回答这样的问题,我只是理解痛苦。当然,我说的是硬件限制,IDE+调试器需要很多功能。对于这样一个简单的问题,调试器是理想的。对于较大的代码,日志语句(甚至只是
printf
s)通常是首选,因为尽管许多代码行可能需要大量的劳动。另外,如果你的代码只能在一些较大的代码库(比如一个巨大的web应用程序)中运行,那么通常最好重构或重新编写部分,这样你就可以在没有整个生产环境可用的情况下进行测试/调试。我试着运行了它,它成功了。这是输出(