我是编程新手,所以对于大多数人来说,我的下一个问题看起来很容易回答。我们走了:
到目前为止,我设法直到第3a点,但没有进一步。请问你能给我一个建议吗? 这是我的代码(let)到目前为止:
string fixed_array[4] = {"apple", "orange", "banana", "kiwi"};
cout << "Please enter something:\n";
string user_input;
cin >> user_input;
for (int i=0; i!=4; i++) {
if (user_input == fixed_array[i]) {cout << "Fruit is in " << i << "\n";}
不幸的是我不知道如何通知用户所请求的水果是否不在数组中,好像我在'if'之后添加'else',程序自然会每次都写出'not found'消息与数组元素不匹配。
我在考虑循环的退出信号(bool可能?):如果循环内有匹配:true,如果没有匹配:false。然后在一个简单的'if'语句中使用这个bool打印出'not found'消息。
有可能这样做,还是我完全偏离了?
提前致谢!
答案 0 :(得分:0)
如果找到的元素如下所示,您可以使用found
设置为true
的标记:
bool found = false;
string fixed_array[4] = {"apple", "orange", "banana", "kiwi"};
cout << "Please enter something:\n";
string user_input;
cin >> user_input;
for (int i=0; i!=4; i++) {
if (user_input == fixed_array[i]) {
cout << "Fruit is at index " << i << "\n";
found = true;
break; //So the loop ends at the current index. This is not needed though
}
}
if (!found)
{
std::cout << "Not Found!\n";
}
答案 1 :(得分:0)
使用
搜索数组。
然后使用
获取索引。
以下是示例代码
#include <string>
#include <iterator>
#include <iostream>
int main()
{
std::string fixed_array[4] = { "apple", "orange", "banana", "kiwi" };
std::cout << "Please enter something: ";
std::string user_input;
std::cin >> user_input;
auto start = std::begin(fixed_array);
auto end = std::end(fixed_array);
auto foundLocation = std::find(start, end, user_input);
bool isFound = foundLocation != end;
if (isFound) {
int index = std::distance(fixed_array, foundLocation);
std::cout << "Found " << user_input << " at index " << index << std::endl;
}
else {
std::cout << "Not found" << std::endl;
}
return 0;
}
答案 2 :(得分:0)
你可以简单地在你的for循环中添加一个else if语句来检查输入是否不仅仅与输出不同,但是如果它是你的水果数组的最后一个元素:
string fixed_array[4] = {"apple", "orange", "banana", "kiwi"};
cout << "Please enter something:\n";
string user_input;
cin >> user_input;
for (int i=0; i != 4; i++) {
if (user_input == fixed_array[i]) {
cout << "Fruit is in " << i << "\n";
break;
}
else if (i == 3) {
cout << "The fruit is not found.\n";
}
}
这是有效的,因为如果找到了水果,else if语句将永远不会运行,如果找到了水果,但它不是for循环的最后一次运行,则else if将不会执行。只有在找不到水果并且for循环最后一次运行时它才会运行,因为这意味着水果不在数组中。
答案 3 :(得分:0)
我已对所需部分提出解释性意见。
Path pp = FileSystems.getDefault().getPath("logs", "access.log");
final int BUFFER_SIZE = 1024*1024; //this is actually bytes
FileInputStream fis = new FileInputStream(pp.toFile());
byte[] buffer = new byte[BUFFER_SIZE];
int read = 0;
while( ( read = fis.read( buffer ) ) > 0 ){
// call your other methodes here...
}
fis.close();