Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从用户输入的字符串和字符串[][]的第一列检索匹配项_Java_Arrays_Csv - Fatal编程技术网

Java 从用户输入的字符串和字符串[][]的第一列检索匹配项

Java 从用户输入的字符串和字符串[][]的第一列检索匹配项,java,arrays,csv,Java,Arrays,Csv,数组存储了所有的信息,我觉得这个程序非常接近工作状态。我知道它不整洁,我会马上打扫的!问题在最底层 public class FoodFacts { private static BufferedReader textIn; private static BufferedReader foodFacts; static int numberOfLines = 0; static int NUM_COL = 7;

数组存储了所有的信息,我觉得这个程序非常接近工作状态。我知道它不整洁,我会马上打扫的!问题在最底层

 public class FoodFacts
{
     private static BufferedReader textIn;
     private static BufferedReader foodFacts;
             static int numberOfLines = 0;
               static  int NUM_COL = 7;
            static int NUM_ROW = 961;
             static String [][] foodArray = new String[NUM_ROW][NUM_COL];
      public static String  fact;
    // Make a random number to pull a line
    static Random r = new Random();




    public static void main(String[] args)
        {
            try 
            {   

                textIn = new BufferedReader(new InputStreamReader(System.in));
                foodFacts= new BufferedReader(new FileReader("foodfacts.csv"));
                Scanner factFile = new Scanner(foodFacts);
                List<String> facts = new ArrayList<String>();

                //  System.out.println("Printing out your array!");
                while ( factFile.hasNextLine()){
                 fact = factFile.nextLine();
                 StringTokenizer st2 = new StringTokenizer(fact, ",")    ;

               while (st2.hasMoreElements()){
                  for ( int j = 0; j < NUM_COL ; j++) {
                    foodArray [numberOfLines][j]= st2.nextToken();  
                    //System.out.println("Foodarray at " + "  " + numberOfLines + " is " +foodArray[numberOfLines][j]);
                   }
                    }  
                     numberOfLines++;
                  }

System.out.println("Please type in the food you wish to know about.");
                String request; //user input 
                request = textIn.readLine();
                System.out.println ("You requested" + request);
公共类FoodFacts
{
私有静态缓冲阅读器文本输入;
私有静态缓冲区读取程序foodFacts;
静态int numberOfLines=0;
静态int NUM_COL=7;
静态整数行=961;
静态字符串[][]foodArray=新字符串[NUM_ROW][NUM_COL];
公共静态字符串事实;
//做一个随机数来拉一条线
静态随机r=新随机();
公共静态void main(字符串[]args)
{
尝试
{   
textIn=新的BufferedReader(新的InputStreamReader(System.in));
foodFacts=newbufferedreader(新文件阅读器(“foodFacts.csv”);
扫描仪factFile=新扫描仪(foodFacts);
列表事实=新的ArrayList();
//System.out.println(“打印出您的数组!”);
while(factFile.hasNextLine()){
fact=factFile.nextLine();
StringTokenizer st2=新的StringTokenizer(事实,“,”);
while(st2.hasMoreElements()){
对于(int j=0;j
问题从这里开始

for ( int i = 0; i < NUM_ROW ; i++)
                    {
if ( foodArray[i][0] == request)
                            for ( int j = 0 ; j < NUM_COL ; j++ )
                        System.out.println ( foodArray[i][j] ); //never prints anything
                        }  

                  }
                    catch (IOException e)
                    {
                    System.out.println ("Error, problem reading text file!");
                    e.printStackTrace();
                    }

             }
  }
for(int i=0;i

我试图在终端中测试它,其中foodArray[6][0]应该与上次
for
循环中的input All Bran Score

匹配,您正在使用
=
if构造中的
=
运算符比较字符串,这会给您错误的结果,因为
=
比较字符串引用,这将是不同的,因为两个引用都指向不同的字符串对象

使用
equals
方法比较字符串内容:-

if (foodArray[i][0].equals(request))
如果要比较任何
对象的
内容
,应始终使用
equals
方法

查看此帖子:-了解更多详细信息