簡體   English   中英

從Java中的文本文件讀取字符串和整數

[英]reading string and integers from a text file in java

/*This assignment is to create 2 parallel arrays – jobs& salaries
*Read file from “careers.txt” into arrays
*one line – job
*next line –salary
*Sort Salaries {from highest}
*then swap jobs if salary swapped
*Display output of careers and salaries from the highest on a formatted table.
* 
 */
package assignment7;
import java.util.*;//importing Scanner


public class Coordinator 
{


    public static void main(String[] args) throws Exception
    {// the main method creates the arrays and calls on each method to perform 
        //its work.
     String [] job = new String[20];//creating a string array having 20 spaces
     int[] salary = new int[20];//creating an integer array having 20 spaces
     int count;// number of spaces actually occupied in the array

     **count = readFile(job, salary);**// calling a method to read text into both
                                   //arrays and return the number of spaces 
                                   //occupied in the array

     sorter(job,salary,count);// calling on method to arrange file from highest
     //to lowest

     display(job, salary,count);// calling on method present the output


    }
    public static int readFile(String[] jobber, int[] salaro) throws Exception
    { // this method reads a text file and copies into arrays and also
        //returns the number of spaces occupied in the array
            int n = 0; //keeps track of number of times a line is fed into an 
            //array

            //set up a file class object linked up to the name of the file to 
            //be read
            java.io.File unread = new java.io.File("career.txt");

            // create a scanner instance to read the input from the file
            Scanner infile = new Scanner(unread);

            /*This while loop reads line of text into the arrays, it uses 
             * boolean
             * function hasNextLine() and the created scanner instance.
             */
            while (infile.hasNextLine() || infile.hasNextInt())
            {
                jobber[n] = infile.nextLine();
                **salaro[n] = infile.nextInt()**;
                n++;
            }//end while
            infile.close();//close scanner class
            return n;// return number of spaces filled

    }//end of readFile method


    public static void sorter(String[] jobestic, int[] salawe, int z) 
            throws Exception
    {// this method sorts the array from the highest paid job to the lowest.

      boolean swapped;// keeps track of when a swap takes place
      int i;// variable fo for loop
      int temp;// helps in swap
      String temp2;// helps in swap

      do
      {
          swapped = false;
          for (i= 0; i < z-1; i++)// a pass through the array
          {
              if (salawe[i+1] > salawe[i])
              // if the number before it is less they swap
              {
                  //swap starts
                  temp = salawe[i+1];
                  salawe[i+1] = salawe[i];
                  salawe[i] = temp;
                  //swaps the jobs too if the salary is swapped
                  temp2 = jobestic[i+1];
                  jobestic[i+1] = jobestic[i];
                  jobestic[i] = temp2;

                  swapped = true;
              }// end if


          }// end for

      } while (swapped);
   }// end sorter method

   public static void display(String[] jobo, int[] salary5 ,int k) throws Exception
   {

       //this method displays the output as a formatted table
       int i;
       System.out.printf("%-60s%15s%n", "Job", "Salary");





       for(i=0; i<k; i++)



           System.out.printf("%-60s%,15d%n", jobo[i], salary5[i]);

   }








}

拜托,這個代碼有什么問題? 我一遍又一遍地絞盡腦汁,無法弄清楚出什么問題了。...我運行了這段代碼,但我不斷收到錯誤信息。 我嘗試讀取的文本文件如下。 我想將職稱存儲在一個數組中,並將相應的薪水存儲在另一個數組中。 像平行陣列。 請問代碼有什么問題? 我想將薪水存儲為整數,因為當我顯示輸出時,我將其格式化為整數。 謝謝。

Computer and Information Research Scientists
102190
Computer and Information Analysts
80460
Computer Systems Analysts
79680
Information Security Analysts
86170
Software Developers and Programmers
87100
Computer Programmers
74280
Software Developers(Applications)
90060
Software Developers(Systems Software)
99000
Web Developers
62500
Database and Systems Administrators and Network Architects
76880
Database Administrators
77080
Network and Computer Systems Administrators
72560
Computer Network Architects
91000
Computer Support Specialists
48900
Computer User Support Specialists
46420
Computer Network Support Specialists
59090

錯誤:

Exception in thread "main" java.util.InputMismatchException 
at java.util.Scanner.throwFor(Scanner.java:909) 
at java.util.Scanner.next(Scanner.java:1530) 
at java.util.Scanner.nextInt(Scanner.java:2160) 
at java.util.Scanner.nextInt(Scanner.java:2119) 
at assignment7.Coordinator.readFile(Coordinator.java:56)
at assignment7.Coordinator.main(Coordinator.java:25)

似乎每隔幾天就會詢問這個問題,或與之相當的問題。

當您調用nextInt() ,掃描儀將在數字之后停止。 然后,當您隨后立即調用nextLine() ,您實際上是在讀取nextLine()的行的末尾的換行符。 您沒有閱讀下一行。 因此,在循環的下一次迭代中,當掃描儀中接下來排列非數字文本時,您將調用nextInt()

在對nextInt()每次調用之后添加一個對nextLine()的附加調用,只是為了讀取該額外的換行符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM