flutter - 为什么我的数组中的数据没有被正确评估?
问题描述
在此循环中,即使条件满足,它也不会进入第二个和第三个 if 语句!
基本上我想要的是根据他们的信息找到人的名字,我已经创建了数组,并且会有相应的卷号和别针以及他们的名字,我使用文本字段进行输入并将其存储在另一个名为的数组中对,现在当我尝试从该数组中获取信息时,它没有像输入 n 3 1 那样给出正确的输出,它必须给出输出 nandini 但它没有发生。
即使 arr[0][1] 等于 3 它也没有进入 if 语句。我也尝试了 '$para[]' 而不是 para[] 但我仍然无法获得预期的输出..
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.deepPurple,
),
home: MyHomePage(
title:
' HELLO AM SRUJITH CHAITHANYA'),
);
}
}
TextEditingController _next = TextEditingController();
var arr = [
[
//roll numbers
1,
3,
8,
1,
8
],
[
//pin
0,
1,
2,
4,
2
],
[
//name
'Srujith',
'nandini',
'pratheek',
'rachana',
'avani'
],
];
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
var para = [];
var i = 0;
class _MyHomePageState extends State<MyHomePage> {
var qi = 0;
var change;
var operator;
var operato;
var result;
var fname;
var f;
void answer() {
setState(() {
qi = qi + 1;
i = i + 1;
change = _next.text;
operator = change;
para.add(operator);
_next.text = '';
setState(() {});
});
if(i==3){
for(int o=0;o<5;o++){
f = arr[2][o];
fname = f.substring(0, 1);
if(para[0]==fname){
result = 'named';
if(para[1]==arr[0][o]){
result = 'rolled';
if(para[2]==arr[1][o]){
result = arr[2][o];
break;
}
}
}
}
}
}
@override
Widget build(BuildContext context) {
var questions = [
'What is the first letter of your name?',
'What is your roll number?',
'What is your pin?',
'question 4'
];
return Scaffold(
drawer: Drawer(
child: null,
),
appBar: AppBar(
title: Text(widget.title),
elevation: 0,
),
body: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(
'https://th.bing.com/th/id/R.5ffeb9b88264485f1b265ff3c94e2dc2?rik=q1VHggJH5dpvmQ&riu=http%3a%2f%2fthewowstyle.com%2fwp-content%2fuploads%2f2015%2f01%2fnature-image.jpg&ehk=1zrBUw2Jkcik7R719ZPnOjG8MrGPNepNGF1KdErFfw4%3d&risl=&pid=ImgRaw&r=0'),
fit: BoxFit.cover),
),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
questions[qi],
style: Theme.of(context).textTheme.headline2,
),
Container(
width: 0.5 * MediaQuery.of(context).size.width,
child: TextFormField(
controller: _next,
// keyboardType: TextInputType.number,
),
),
Text(
('$result'),
style: Theme.of(context).textTheme.headline2,
),
Text(
('$i'),
style: Theme.of(context).textTheme.headline2,
),
Text(
('$para'),
style: Theme.of(context).textTheme.headline2,
),
ElevatedButton(
child: Text('answer'),
onPressed: answer,
),
],
),
),
),
);
}
}
解决方案
尝试使用 if-else-if 而不是单个 if 语句:
for(int o=0;o<5;o++){
f = arr[2][o];
fname = f.substring(0, 1);
if(para[0]==fname)
result = 'named';
else if(para[1]==arr[0][o])
result = 'rolled';
else if(para[2]==arr[1][o])
result = arr[2][o];
else
return 0;
}
ps:也可能是因为你没有添加正确的{}
推荐阅读
- python - 如何在不创建对象的情况下调用 python 的标准库函数?
- java - 未找到媒体类型 = 文本/xml 的 MessageBodyReader
- sql - SQL Server,测试数据库环境的每日还原
- nativescript - 如何使用 imagepicker 选择 ios 图像并在 Nativescript 中显示
- apache-spark - Pyspark 作业队列配置优先级 - spark-submit vs SparkSession.builder
- javascript - 通过 api 端点访问特定项目
- javascript - React Jsx - 如何为随机报价生成器挂钩 RxJs 点击事件?
- python - 相同数据集和超参数的差异 betweek Keras 和 Tensorflow
- reactjs - 反应内存泄漏,componentDidUnmount 不起作用
- c# - 插入数据时在 xamarin 表单中出现错误:System.ArgumentNullException:'值不能为空。参数名称:取消'