我如何转换为 double .dart
How i can convert to double .dart
我这段代码有问题,这段代码无法执行。这是代码:
import 'dart:io';
main() {
print("CALCULATOR");
stdout.write("Number a: ");
double a = double.parse(stdin.readLineSync());
stdout.write("Number b: ");
double b = double.parse(stdin.readLineSync());
double result;
// operator +
result = a + b;
print("$a + $b = $result");
// operator -
result = a - b;
print("$a - $b = $result");
// operator *
result = a * b;
print("$a * $b = $hasil");
// operator /
result = a / b;
print("$a / $b = $result");
// operator %
result = a % b;
print("$a % $b = $result");
}
这是我的问题:
myLearning/myNote/test.dart:7:33: Error: The argument type 'String?' can't be assigned to the parameter type 'String' because 'String?' is nullable and 'String' isn't.
double a = double.parse(stdin.readLineSync());
^
myLearning/myNote/test.dart:9:33: Error: The argument type 'String?' can't be assigned to the parameter type 'String' because 'String?' is nullable and 'String' isn't.
double b = double.parse(stdin.readLineSync());
我只是想如果我输入一个数字,结果将是这样的:
CALCULATOR
Number a : 9
Number b : 2
9.0 + 2.0 = 11.0
9.0 - 2.0 = 7.0
9.0 * 2.0 = 18.0
9.0 / 2.0 = 4.5
9.0 % 2.0 = 1.0
我能得到像上面那样的输入吗?
您的“问题”是您使用的是 Dart 2.12 的测试版,它启用了不可为空的功能。此功能将帮助您确保了解可能出现空值的所有情况。在您的情况下,它是对 stdin.readLineSync()
:
的调用
Returns null if no bytes preceded the end of input.
你得到一个错误,因为 double.parse
接受一个 String
作为参数,但是 stdin.readLineSync()
返回 String?
,它是一个可以是 [=13= 的类型] 或 null
(其中 String
只允许 String
,永远不能是 null
)。
简单的解决方法是执行以下操作并在 readLineSync()
之后插入 !
:
import 'dart:io';
void main() {
print("CALCULATOR");
stdout.write("Number a: ");
double a = double.parse(stdin.readLineSync()!);
stdout.write("Number b: ");
double b = double.parse(stdin.readLineSync()!);
double result;
// operator +
result = a + b;
print("$a + $b = $result");
// operator -
result = a - b;
print("$a - $b = $result");
// operator *
result = a * b;
print("$a * $b = $result");
// operator /
result = a / b;
print("$a / $b = $result");
// operator %
result = a % b;
print("$a % $b = $result");
}
通过执行 !
,您告诉 Dart 您确定该值不为 null,分析器应该只接受该值,就好像它永远不会 null
.
在运行时,如果 stdin.readLineSync()
的返回值是 null
,Dart 将为 null
添加运行时检查并使程序崩溃(使用 NullPointerException)。但是因为我们正在开发一个小示例程序,所以这很好。
您可以在此处阅读有关默认情况下非空 (NNBD) 的更多信息:https://dart.dev/null-safety
我这段代码有问题,这段代码无法执行。这是代码:
import 'dart:io';
main() {
print("CALCULATOR");
stdout.write("Number a: ");
double a = double.parse(stdin.readLineSync());
stdout.write("Number b: ");
double b = double.parse(stdin.readLineSync());
double result;
// operator +
result = a + b;
print("$a + $b = $result");
// operator -
result = a - b;
print("$a - $b = $result");
// operator *
result = a * b;
print("$a * $b = $hasil");
// operator /
result = a / b;
print("$a / $b = $result");
// operator %
result = a % b;
print("$a % $b = $result");
}
这是我的问题:
myLearning/myNote/test.dart:7:33: Error: The argument type 'String?' can't be assigned to the parameter type 'String' because 'String?' is nullable and 'String' isn't.
double a = double.parse(stdin.readLineSync());
^
myLearning/myNote/test.dart:9:33: Error: The argument type 'String?' can't be assigned to the parameter type 'String' because 'String?' is nullable and 'String' isn't.
double b = double.parse(stdin.readLineSync());
我只是想如果我输入一个数字,结果将是这样的:
CALCULATOR
Number a : 9
Number b : 2
9.0 + 2.0 = 11.0
9.0 - 2.0 = 7.0
9.0 * 2.0 = 18.0
9.0 / 2.0 = 4.5
9.0 % 2.0 = 1.0
我能得到像上面那样的输入吗?
您的“问题”是您使用的是 Dart 2.12 的测试版,它启用了不可为空的功能。此功能将帮助您确保了解可能出现空值的所有情况。在您的情况下,它是对 stdin.readLineSync()
:
Returns null if no bytes preceded the end of input.
你得到一个错误,因为 double.parse
接受一个 String
作为参数,但是 stdin.readLineSync()
返回 String?
,它是一个可以是 [=13= 的类型] 或 null
(其中 String
只允许 String
,永远不能是 null
)。
简单的解决方法是执行以下操作并在 readLineSync()
之后插入 !
:
import 'dart:io';
void main() {
print("CALCULATOR");
stdout.write("Number a: ");
double a = double.parse(stdin.readLineSync()!);
stdout.write("Number b: ");
double b = double.parse(stdin.readLineSync()!);
double result;
// operator +
result = a + b;
print("$a + $b = $result");
// operator -
result = a - b;
print("$a - $b = $result");
// operator *
result = a * b;
print("$a * $b = $result");
// operator /
result = a / b;
print("$a / $b = $result");
// operator %
result = a % b;
print("$a % $b = $result");
}
通过执行 !
,您告诉 Dart 您确定该值不为 null,分析器应该只接受该值,就好像它永远不会 null
.
在运行时,如果 stdin.readLineSync()
的返回值是 null
,Dart 将为 null
添加运行时检查并使程序崩溃(使用 NullPointerException)。但是因为我们正在开发一个小示例程序,所以这很好。
您可以在此处阅读有关默认情况下非空 (NNBD) 的更多信息:https://dart.dev/null-safety