1

配列にはすべての情報が格納されており、このプログラムはほぼ機能しているように感じます。私はそれがきちんとしていないことを知っています、私はすぐにそれをきれいにします!問題は一番下。

 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);

問題はここから始まります!

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();
                    }

             }
  }

foodArray[6][0] が入力 All-Bran Cereal と一致する必要がある端末でテストしようとしています

4

1 に答える 1

2

最後のforループでは、で==演算子を使用して文字列を比較していますが、両方の参照が異なる文字列オブジェクトを指しているため、異なる文字列参照を比較するif constructため、誤った結果が得られます。==

メソッドを使用equalsして文字列の内容を比較します: -

if (foodArray[i][0].equals(request))

を比較したい場合は、常にequalsmethod を any とともに使用する必要があります。objectcontent

この投稿をチェックしてください: -詳細については、Java で文字列を比較する方法をご覧ください。

于 2012-11-14T18:44:50.460 に答える