2013-08-26 60 views
1

我要求用戶在運行時給出一個值來做一些計算。檢查輸入數據類型以及它是否爲空或空

  1. 我想測試,如果用戶輸入值爲實/整數,如果沒有的話發出警告,該計劃是在這裏期待一個真正的/整數。
  2. 另外,我還想知道我們該如何檢查當前的特定變量是空還是空。即我已經聲明瞭一個變量,但是如果在計算時其值爲空或者爲空或者還沒有設置,那麼程序不應該崩潰,而是提供警告以提供正確的值。

這兩個操作在C++和C#中都更加容易,但是我在Fortran中找不到方法。

+1

難怪在C++中使用C++會比較容易,因爲您需要的東西在Fortran中可能沒有任何意義。你能指定你的意思是由空或空的聲明變量? –

+0

我相信單一變量的值在C++中也是未定義的。 – agentp

回答

2

我猜你的意思是「空或空」是否一個變量已被初始化:「尚未設置」。 「null」對於Fortran指針變量有特殊意義,但我想這不是你的問題。 Fortran在故意初始化之前不會自動爲變量賦予特殊值,因此沒有簡單的方法檢查變量是否已初始化。一種方法是用特殊的值初始化變量的聲明。這意味着您需要知道在程序運行過程中永遠不會獲得的特殊價值。一種可能性是使用huge稟道:

program TestVar 

    real :: AVar = huge (1.0) 

    if (AVar < huge (1.0)) then 
     write (*, *) "Test 1: Good" 
    else 
     write (*, *) "Test 1: Bad" 
    end if 

    AVar = 2.2 

    if (AVar < huge (1.0)) then 
     write (*, *) "Test 2: Good" 
    else 
     write (*, *) "Test 2: Bad" 
    end if 

end program TestVar 

正如警告說@arbautjc,這隻能使用一次,即使是在一個子程序。在一個過程中,聲明的初始化只能在第一次調用時完成。另外,如果您從此示例更改變量類型,請務必瞭解huge的工作原理(例如,Long ints in Fortran)。