我正在使用来自文本文件的输入制作程序,它只有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();
}
}
答案 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;表示原始要求。祝你好运。