【发布时间】:2019-05-17 05:59:24
【问题描述】:
所以,我想编写一些代码,以便用户无法输入不在城市列表中的城市,city_list 数组是大小为 5 的一维数组,其值为 A、B、C、D 和E. 所以我做的是这个
character, dimension(5) :: city_list
do i=1,5
city_list(i)= achar(i+64) !To give the array a,b,c values to its first five components
end do
character :: City1, ...
do while(ANY(City_list == City1) )
READ*, City1
PRINT*, "IT'S GOT TO BE A,B,C,D,E"
end do
所以我使用了我在另一篇文章中看到的 ANY 函数,但我不能很好地使用它,它似乎没有按照我的要求做
【问题讨论】:
-
不清楚你想让你的程序做什么,无论是在你的描述还是你的代码中。回答这些问题:(i) 你希望你的代码做的第一件事是什么? (ii) 如果用户输入其中一个城市的名称会发生什么? (iii) 如果用户输入的不是城市名称,会发生什么?不,不要告诉我这些问题的答案,在你的程序中实现它们。顺便说一句,如果需要真正的帮助,请发布真实代码。
-
哦,嗨,马克 (:P),我会发布实际代码,但它不是英文的(至少是变量的名称,虽然这可能是你不关心的东西)我认为我认为我所问的没有必要,我可能没有正确表达自己,对不起。我只希望 do while 循环继续循环,直到您输入的“city1”是 city_list 数组上的字符串,所以我正在寻找一个函数,它将数组中的所有值与“city1”进行比较,这就是为什么我使用了 ANY(我在另一篇文章中看到),我真的应该在这里做任何事情吗?
-
欢迎,我们真的确定了确切的代码 (minimal reproducible example)。变量不必是英文的,或者您可以为我们重命名它们。最重要的是看看你在做什么。请注意,您似乎对什么是 Fortran 字符串和什么是字符数组感到困惑。 这些非常不同。 ANY 仅适用于字符数组,对于字符串使用 SCAN。见stackoverflow.com/questions/33415590/…