簡體   English   中英

如何為 java 中的給定輸入文件生成 output 文件

[英]How to generate output file for given input file in java

我在編碼平台中提交代碼時遇到了麻煩。

問題陳述

一位當地音樂家正在舉辦一場音樂會,為慈善事業籌集資金。 音樂會將在市政廳舉行,寬敞的場地非常適合舉辦此類活動。

  • r排座位,每排正好包含s個座位。
  • 最多一個人可以坐在一個座位上(即兩個人不能共用一個座位)。

有一個問題 - 音樂會可能已經超額預訂,這意味着如果每個買票的人都來參加音樂會。 他們中的一些人可能不得不站立。

現在這位音樂家找你,不是為了建議,而是為了回答以下問題:

如果每個買票的人都來找座位,最終會有多少人坐着,有多少人站着?

這是我的程序:

  package Prerequisite;
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  import java.io.PrintStream;
  import java.util.Scanner;

  public class Solution {
  static private  final String INPUT ="sitin.txt";   
  static private  final String OUTPUT ="sitout.txt";   
  public static void main(String[] args) {
    FileInputStream instream = null;  
    PrintStream outstream = null;  
      try  {  
          instream =  new  FileInputStream (INPUT);  
          outstream =  new  PrintStream ( new  FileOutputStream (OUTPUT));  
          System.setIn (instream);  
          System.setOut (outstream);  
      }  catch  (Exception e) {  
          System.err.println ( "Error Occurred." );  
      }
     Scanner sc=new Scanner(System.in);
     int r=sc.nextInt();
    int s=sc.nextInt();
    int ticket=sc.nextInt();
    if((r*s)>=ticket)
   {
   System.out.println(ticket+" "+0);
    }
  else
  {
    System.out.println(r*s+" "+(ticket-r*s));
  }
   }
     }

輸入 7 12 100

Output 84 16

當我 16 歲時,我開始使用偽代碼進行編程: 結構圖,一種邏輯流的可視化。 這可能有助於通過分而治之的方式解決分解問題。

但首先開始定義您給定的輸入預期的 output - 將其稱為您的用戶界面(此處:基於文件)

要求:輸入/輸出接口

假設給定的輸入

您將獲得一個文件,其中包含由空格字符分隔的 3 條記錄的行:

7 12 100

以上3條記錄代表讀入變量的數字,如下:

  • 音樂廳7 rows
  • 大廳每排12 seats
  • 演唱會共售出100 tickets

預計 Output

程序應將其 output 寫入文件。 所以這個文件包含一行有 2 條記錄,即由空格分隔的數字(類似於給定的輸入格式)。 首先是占用seats總計數 其次是剩下的不能坐下和standing的游客的數量。 例如:

84 16

分解成偽代碼

我不能在這里畫結構圖。 對於您的任務 amd 語言(Java),我建議您從幾條評論開始。 只需像電影情節一樣用不同的場景(輸入、處理、輸出)寫下應該發生的事情。 像這樣:

// (1) read parameters (3 variables) from input (file):
   // open given input-file (sitin.txt)
   // read first line from file
   // close file
   String content = Files.readString(path, StandardCharsets.US_ASCII);
   // split the read line by delimiter space into 3 strings (e.g. array)
   // convert the 3 strings into number variables (e.g. rows, seats, tickets

//  (2) calculate maximum seats (capacity) and ticket-category distribution (seated VS standing):
  // do the math ..
  // return the results (e.g. an object with two fields/variables: totalSeated, totalStanding)

// (3) write results to output:
   // open given output-file (sitout.txt)
   // write 3 variables delimited by space to the file
   // close file

您現在已將問題分為 3 個塊。 每個都可以單獨解決。 因此,您可以將程序構造成 3 種方法。

為什么要分解?

它可能是您解決任何問題的關鍵。 它通過以下模式/原則而廣為人知並廣泛實踐:關注點分離單一責任原則或簡單地分治

它有很多好處:孤立的開發和孤立的測試。 在這種情況下:您可以在 stackoverflow 上提出 3 個單獨的問題

對於 (1) 我已經找到了答案: File-Reading ,我已經在上面的評論之間插入了。

您嘗試編寫哪種方法? 您在哪里需要我們的幫助:1、2 或 3?

暫無
暫無

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

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