2
public class array {
    public static void main(String[] args) throws IOException {

         BufferedReader reader = new BufferedReader(new FileReader("fruit.txt"));

          System.out.println("enter the fruit you want to search");     
          Scanner input =  new Scanner(System.in);
          String fruit = input.nextLine();
          String line;

          List<String> list = new ArrayList<String>();
          while((line=reader.readLine()) !=null)
          {
              list.add(line);
          }

          reader.close();

          for (String s : list) {    
              System.out.println(s); 
          }
    }
}

私はfruit.txtを持っています

apple 20 good
orange 30 good
banana 40 needmore

配列リストからオレンジの数を取得するにはどうすればよいですか。この場合は「オレンジ」のユーザー入力をプログラムに読み取らせて30を表示させたいのですが、状態が良くありません。

理想的な出力は

You have orange 30 of them and status is good
4

5 に答える 5

1

Stringsを分割してListから、指定した文字列形式で取得した配列の各要素を出力する必要があります。

for (String s : list) { 

    String[] tokens = s.split(" ");
    if (tokens[0].equals(fruit)) {
          System.out.println("You have " + tokens[0] + " " + tokens[1] +  
                             " of them and status is " + tokens[2]);
          break;
    }
}

または、次を使用できます:-

System.out.format("You have %s %s of them and status is %s", 
                   tokens[0], tokens[1], tokens[2]);
于 2012-10-25T14:02:19.843 に答える
1

次の更新されたクラスを試してください。

public class array
{

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

      BufferedReader reader = new BufferedReader(new FileReader("fruit.txt"));

      System.out.println("enter the fruit you want to search");
      Scanner input = new Scanner(System.in);
      String fruit = input.nextLine();

      String line;

      boolean found = false;
      int count = 0;

      List<String> list = new ArrayList<String>();
      while ((line = reader.readLine()) != null)
      {
         String[] items = line.split(" ");

         if (fruit.equals(items[0]))
         {
            found = true;
            count = Integer.parseInt(items[1]);
            break;
         }

         list.add(line);
      }

      reader.close();

      if (found)
      {
         System.out.println("You have " + fruit + " " + count + " of them and status is good");
      }
   }
}
于 2012-10-25T14:05:33.773 に答える
0

StringTokenizerを使用して、行を3つのフィールドに分割する必要があります。次に、その情報を保持するための新しいクラスを作成します。

于 2012-10-25T14:02:38.173 に答える
0

行を読み取るときは、次のように値を文字列配列に分割します。

while((line=reader.readLine()) !=null)
            {
                String [] values = line.split(" ");

                list.add("You have "+values[0] + " " + values[1] " of them and status is "+values[2]  );
            }
于 2012-10-25T14:05:25.860 に答える
0

テストされていませんが、動作するはずです。試してみてください。

public class array {

    public static class Fruit {
        private String name;
        private String count;
        private String status;

        public Fruit(String name, String count, String status) {
            this.name = name;
            this.count = count;
            this.status = status;
        }

        public String getName() {
            return name;
        }

        public String getCount() {
            return count;
        }

        public String getStatus() {
            return status;
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader("fruit.txt"));
        System.out.println("enter the fruit you want to search");
        Scanner input = new Scanner(System.in);
        String fruit = input.nextLine();
        String line= "";
        HashMap<String, Fruit> map = new HashMap<String, Fruit>();
        while ((line = reader.readLine()) != null) {
            String[] strings = line.split(" ");
            map.put(strings[0], new Fruit(strings[0], strings[1], strings[2]));
        }
        reader.close();
        System.out.print("You have " + fruit + " " + map.get(fruit).getCount() + " of them and status is: " + map.get(fruit).getStatus());
    }

}
于 2012-10-25T14:06:39.790 に答える