$table_num = Read-Host -Prompt 'Enter the table number you want to get printed'
for ($i=1; $i-lt 11; $i++){
$ans = ($table_num*$i)
write "$table_num*$i=$ans"
}上面是我试图执行的脚本,我得到的结果如下:
Enter the table number you want to get printed: 5
5*1=5
5*2=55
5*3=555
5*4=5555
5*5=55555
5*6=555555
5*7=5555555
5*8=55555555
5*9=555555555
5*10=5555555555我是一个脚本新手,并帮助我编写代码。
发布于 2016-07-19 18:22:17
谢谢你的回答!
实际上,我已经添加了数据类型int。脚本很好,如下所示。
$table_num = Read-Host -Prompt 'Enter the table number you want to get printed'
For ($i=1; $i-lt 11; $i++){
$ans = ([int]$table_num*$i)
write "$table_num * $i = $ans"
}发布于 2016-07-16 18:45:31
由于您没有指出预期行为是什么,我不确定是否解决了您的问题,但我猜您想要这样的东西
$table_num_str = Read-Host -Prompt 'Enter the table number you want to get printed'
$table_num = [int]::Parse($table_num_str)
for ($i=1; $i-lt 11; $i++){
$ans = ($table_num*$i)
write "$table_num*$i=$ans"
} 当输入'5‘时,结果是
Enter the table number you want to get printed: 5
5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
5*6=30
5*7=35
5*8=40
5*9=45
5*10=50所以问题是,Read-Host返回一个string,当与X相乘时,该字符串重复X次。
发布于 2016-07-16 18:57:53
问题存在于Read-Host cmdlet返回的类型中。
$num = read-host
$num.GetType()它返回Object[],如果需要,它会隐式转换为其他类型。当使用二元运算符(+,-,*)时,类型也会转换为第一个参数类型。object[]类型中没有*运算符。这就是为什么它被转换成字符串,然后乘以的原因。如果第一个参数是int,PowerShell也会尝试将其转换为int。您可以调整代码以使用此转换规则。看看下面的脚本:
$table_num = Read-Host -Prompt 'Enter the table number you want to get printed'
1..10 | % { write "$table_num*$_=$($_*$table_num)" }它还产生:
5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
5*6=30
5*7=35
5*8=40
5*9=45
5*10=50https://stackoverflow.com/questions/38410213
复制相似问题