System.out.println

时间:2015-11-22 20:08:11

标签: java

我正在使用来自文本文件的输入制作程序,它只有2行文本

  • 120(现在是时间)
  • 2(这是变化)

我的代码用于读取用户的输入,该输入将小时转换为分钟,然后请求进行一些更改。如果输入的小时是02:00,即120分钟,输入的更改是2或更少,那么它将返回说“可接受”,如果不是,它将显示为“不可接受”但是我在制定这个时遇到了一些麻烦。如果有人能提供帮助我会非常感激!

要遵循的代码:

import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class InputOutput {

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

    final Scanner S = new Scanner(System.in);
    final Scanner inFile = new Scanner(new FileReader("task.txt"));

    // open file and associate objects
    int IOminutes = Integer.parseInt(inFile.next());
    int changes = Integer.parseInt(inFile.next());

    // close the input file
    inFile.close();

    System.out.print("Specify Time (HH:MM): ");
    String givenTime = S.next();

    System.out.print("Specify Changes: ");
    String givenChanges = S.next();

        // save the index of the colon
        int colon = givenTime.indexOf(':');

        // strip the hours preceding the colon then convert to int      
        int givenHours = Integer.parseInt(givenTime.substring(0, colon));

        // strip the mins following the colon then convert to int
        int givenMins = Integer.parseInt(givenTime.substring(colon + 1, givenTime.length()));

        // calculate the time's total mins
        int mins = (givenHours * 60) + givenMins;

        // using given time
        System.out.println(givenTime + " = " + mins + " minutes");

            if (!givenTime.equals(IOminutes) && changes >= 3) {
                System.out.println("Time: " + givenTime + ", Changes: " + givenChanges + " = unacceptable!");
            } else if (givenTime.equals(IOminutes) && changes <= 2) {
                System.out.println("Time: " + givenTime + ", Changes: " + givenChanges + " = acceptable!");
            }
        S.close();
    }
}

1 个答案:

答案 0 :(得分:2)

您的输入(基于文件和基于用户)看起来合理。 当你到达第40行的if-elseif逻辑时,你有以下值(所有值都基于问题中的问题描述): 来自&#34; task.txt&#34; ...     IO分钟:120     变化:2

user input:
givenTime="02:00"
givenChanges=2
givenHours=2
givenMins=0
mins=2*60+0 = 120

从字符串到整数的转换似乎没问题。

您期望的结果&#34;可接受的&#34; /&#34;不可接受&#34;我很难理解;不是它在做什么,而是为什么它这样做。 我无法理解为什么你有两个&#34;更改&#34;。

如果你刚才有这个对我更有意义:     task.txt:IOminutes = 120,更改= 2     给定:时间=&#34; hh:mm&#34; 现在计算task.txt的IOminutes和用户给定时间之间的差异(以分钟为单位)。让我们称之为差异。然后你有类似的东西:     如果givendiff&gt;然后改变是不可接受的。

示例(用户输入值或多或少组成):

task.txt: IOminutes=120, changes=2
test 1: given time="02:00"  (computed givendiff=0,   so acceptable)
test 2: given time="01:50"  (computed givendiff=-10, so unacceptable)
test 3: given time="02:05"  (computed givendiff=5,   so unacceptable)
test 3: given time="02:02"  (computed givendiff=2,   so acceptable)
test 3: given time="01:58"  (computed givendiff=-2,  so acceptable)

我建议您查看原始要求,并验证您的用户是否应该给您额外的更改&#34;除了task.txt的更改。或者,如果你应该计算task.txt的IOminutes和用户输入的值之间的差异,并抱怨该差异超过了task.txt的更改值。

我会更进一步,但这似乎是一个家庭作业或代码挑战问题;如果是这样的话,希望这足以帮助推动你的观点重新发生变化&#34;变化&#34;表示原始要求。祝你好运。