为什么我的数组中的数据没有被正确评估?



在这个循环中,即使条件满足,它也不会进入第二个和第三个if语句!

基本上我想要的是根据他们的信息找到人的名字,我已经创建了数组,其中将有相应的卷号和pin和他们的名字,我正在使用文本字段输入并将其存储在另一个名为para的数组中,现在,当我试图从该数组中获取信息时,它没有给出正确的输出,比如为输入n3.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:也可能是因为你没有添加正确的{}

最新更新