0

「DataFile.txt」ファイルからデータを読み取りたいのですが、プログラムに 2 つの整数があるため、StringTokenizer を使用して整数 (「days」変数と「tprice」変数は整数である必要があります) を渡すにはどうすればよいですか?

 private void readDataFileAndDisplay()
      {    
           String allRecord="";     // all details of customer    
           try
           {
                Scanner in = new Scanner (new FileReader ("DataFile.txt")); //open file    
                String myEntry = "" ;   
                String name ="";
                String ID="";
                String roomType ="";
                String meal="";
                String days="";
                String tprice="";  

                while (in.hasNextLine ())
                {    
                    myEntry = in.nextLine();
                    StringTokenizer st = new StringTokenizer (myEntry, ",");
                    while (st.hasMoreTokens ())
                    {    
                        name = st.nextToken();
                        ID = st.nextToken();
                        name = st.nextToken();
                        roomType = st.nextToken();
                        meal = st.nextToken();
                        days = st.nextToken();
                        tprice =st.nextToken();
                        myList.add (new Customer (name, ID, roomType, meal, days, tprice));
                    }    
                } // end of while loop
                in.close(); // close file
              } catch (IOException ex)
              {
                     System.out.println ("file loading failed.");
              }
   }

私も parseInt を試しました:

int Intdays = Integer.parseInt (st.nextToken ());
int IntTprice = Integer.parseInt (st.nextToken ());

しかし、コンパイル後、以下の例外が表示されます: ここに画像の説明を入力

4

3 に答える 3

1
name = st.nextToken();
                    ID = st.nextToken();
                    name = st.nextToken();
                    roomType = st.nextToken();
                    meal = st.nextToken();
                    days = st.nextToken();
                    tprice =st.nextToken();
                    int Intdays = Integer.parseInt(days);
                    int IntTprice = Integer.parseInt(tprice);
                 myList.add(new Customer(name,ID,roomType,meal,Intdays,IntTprice));

このコードで試してください。

于 2012-04-25T10:18:26.523 に答える
0
days   = Integer.parseInt (st.nextToken ());
tprice = Integer.parseInt (st.nextToken ());

days と tprice を int として宣言すると、それが可能になります。

ただし、スキャナーを直接使用することもできます。ファイルの代わりに文字列を使用する方法を示します。これは、デモンストレーションに適しています。

data = "John, Miller, 303, 404";
sc = new java.util.Scanner (data);
sc.useDelimiter (", ");
name = sc.next ();      // John
surname = sc.next ();   // Miller
tdays = sc.nextInt ();  // 303
于 2012-04-25T10:18:31.027 に答える
0

名前を 2 回読み取ろうとしています。あなたのデータには6つのフィールドしかありませんが、7つのフィールドを読み込もうとしています。(name = st.nextToken() はタイプミスのようです)

 while (st.hasMoreTokens ())
                {    
                    name = st.nextToken();
                    ID = st.nextToken();
                    name = st.nextToken();
                    roomType = st.nextToken();
                    meal = st.nextToken();
                    days = st.nextToken();
                    tprice =st.nextToken();
                    myList.add (new Customer (name, ID, roomType, meal, days, tprice));
                }    

これは間違っています。st.nextToken() を呼び出す前に、毎回 st.hasMoreTokens() を確認する必要があります。

于 2012-04-25T11:14:20.740 に答える