簡體   English   中英

從文件讀取不會讀取Java的第一個值

[英]reading from a file wont read the first value Java

因此,我需要執行此代碼,我需要它來打開文件,並掃描文件中的兩個整數,然后需要它來存儲兩個數字。 數字限制為第一個數字在1到10之間,第二個數字在1到39之間。 我有一個valueCounter來確保將正確的數字存儲在正確的變量中。 由於某種原因,代碼始終返回“您的初始Fib超出范圍,eneter號在1-10之間”,如果第一個數字大於10或小於1,則該值是適當的,但是無論我更改第一個數字是什么到,代碼返回同一行。 唯一不會返回該行的時間是我將第二個數字更改為介於1和10之間的時間。因此,我可以得出結論,代碼正在跳過第一個數字,但是我不知道為什么。 有什么可以幫助的高智商嗎?

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);
        }
    }
}

由於運算符優先級&&||之前被求值。 這使得以下表達式

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

第二輪計算結果為true,因為計算出第一個value < 1 && valuecounter == 1 ,這是錯誤的。 接下來,對value > 10進行評估,這是正確的。 Or -ing都得到true,然后執行主體。 使用括號可以控制評估的順序。

if ( value > 10 || value < 1 && valueCounter == 1)似乎始終為true,並且由於其在代碼結尾處是普通的外部“ if”,因此始終會對其進行調用。 過度考慮您的“如果”及其外觀

暫無
暫無

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

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