【问题标题】:How to generate output file for given input file in java如何在java中为给定的输入文件生成输出文件
【发布时间】:2021-05-14 14:03:31
【问题描述】:

我在编码平台上提交代码时遇到了麻烦。

问题陈述

一位当地音乐家正在举办一场音乐会,为慈善事业筹集资金。音乐会将在市政厅举行,宽敞的场地非常适合举办此类活动。

  • 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

输出 84 16

【问题讨论】:

  • 您甚至没有尝试解决问题,也没有提供文件内容的示例。
  • 欢迎来到 SO!我重新格式化了您的帖子(目前在队列中等待)。请edit 并发布您的输入示例sitin.txt 的文本内容)。 预期的输出是什么,你能举个例子吗(至少是格式)?
  • 对不起,我没有展示我的尝试,因为它是错误的,所以我认为没有展示
  • @hc_dev,请注意FAQs on editing 中题为“不要抛光粪便”的段落。恕我直言,这只是一个家庭作业问题的转储,因此应该关闭,而不是编辑。
  • @19UEC089MuditTiwari 恐怕不行,原因有二:第一,我没时间;其次,我给你的答案如何帮助你以任何方式学习?将问题分解成小的组件问题,然后仔细而有条不紊地理解和解决每个单独的问题,直到你解决了整个问题,这就是编程的全部内容。仅仅被告知这个问题的答案对你没有一点帮助。

标签: java file input output write


【解决方案1】:

在我 16 岁的时候,我开始使用伪代码进行编程:structograms,一种逻辑流的可视化。这可能有助于通过分而治之的方式解决分解问题。

但首先开始定义您的给定输入预期输出 - 将其称为您的用户界面(此处:基于文件)

要求:输入/输出接口

假设给定的输入

给你一个文件,其中一行包含由空格字符分隔的 3 条记录:

7 12 100

以上3条记录代表数字,读入变量如下:

  • 7 rows在音乐厅
  • 大厅每排12个seats
  • 演唱会共售出100张tickets

预期输出

程序应将其输出写入文件。所以这个文件包含一行有 2 条记录,即由空格分隔的数字(类似于给定的输入格式)。首先是占用seats 的结果总数。其次,剩余的人数是无法入座且为standing 的剩余访客。 例如:

84 16

分解成伪代码

我无法在这里绘制结构图。对于您的任务 amd 语言 (Java),我建议从几个 cmets 开始。只需像电影情节一样用不同的场景(输入、处理、输出)写下应该发生的事情。像这样:

// (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)我已经找到了answer: File-Reading,我已经在上面的cmets之间插入了。

您尝试编写哪种方法? 您在哪里需要我们的帮助:1、2 或 3?

【讨论】:

  • 你看,我在上面犯了错误。这就是开发者的方式。不要害羞或羞愧:只要分享你的代码,你的想法。然后任何人都会理解并尽力提供最好的帮助。说实话?
  • 是的,你。是对的,因为这是我第一次,所以这就是为什么下次会有更好的版本的我?和 thnx 帮助我,因为我认为我的问题不会被任何人回答所有人都认为我在问问题的逻辑? ?
猜你喜欢
  • 1970-01-01
  • 2012-05-09
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
  • 2022-01-16
相关资源
最近更新 更多