从文件读取不会读取第一个值Java

所以我有这段代码,我需要它打开一个文件,并扫描文件中的两个整数,然后我需要它来存储这两个数字。第一个数字的数字限制在1到10之间,第二个数字的数字限制在1到39之间。我有一个valueCounter来确保正确的数字存储在正确的变量中。由于某些原因,代码总是返回 “您的初始Fib超出范围,在1-10之间的进球号” 如果第一个数字大于10或小于1,这将是适当的,但无论我如何更改第一个数字,代码返回相同的行。唯一不会返回该行的是当我将第二个数字更改为1到10之间。所以我可以得出结论,代码跳过第一个数字,但我无法弄清楚为什么。任何智力更高的人都可以提供帮助?从文件读取不会读取第一个值Java

private static File inFile = null; 

private static PrintWriter outFile = null;

private static int startValue;

private static int lengthValue;

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

{

inFile = new File(inFileName);

Scanner in = new Scanner (inFile);

outFile = new PrintWriter (outFileName);

int valueCounter = 1;

while (in.hasNextInt())

{

int value = in.nextInt();

if (value <= 39 && value >= 1 && valueCounter == 2)

{

lengthValue = value;

valueCounter ++;

}

if (value > 39 || value < 1 && valueCounter == 2)

{

System.out.println("You are asking for too many Fib, eneter # between 1-39");

in.close();

System.exit(1);

}

if (value <= 10 && value >= 1 && valueCounter == 1)

{

startValue = value;

valueCounter ++;

}

if (value > 10 || value < 1 && valueCounter == 1)

{

System.out.println("Your Initial Fib is out of range, eneter # between 1-10");

in.close();

System.exit(1);

}

}

}

回答:

正是因为operator precedence,该&&||之前评估。这使得下面的表达式

if (value > 10 || value < 1 && valueCounter == 1) 

评价为真正的第二轮中,因为第一value < 1 && valuecounter == 1进行评价,这是错误的。接下来,value > 10被评估,这是真的。 Or - 两个结果都是正确的,并且正文执行。使用括号来控制评估顺序。

回答:

if (value > 10 || value < 1 && valueCounter == 1) 似乎永远是真实的,因为它是一个正常的外部“如果”在代码的末尾,它总是被称为。过时你的“如果”和它的外观

以上是 从文件读取不会读取第一个值Java 的全部内容, 来源链接: utcz.com/qa/258760.html

回到顶部