我们要计算一些整数的平方和,负数除外
输入的第一行将是整数N(1 <= N <= 100)
以下N个测试用例中的每一个都由一行包含整数X(0 样本输入 2 4 3 -1 1 14 5 9 6 -53 32 16 样本输出 206 1397 所以我是Golang的新手,我设法使用for语句解决了这个问题。
我如何遵守既定的而不用于?仅使用标准库?
任何指针将不胜感激 //我使用了fmt从控制台读取数据。仅当数字为正时,才求出平方和。然后将计算出的总和显示在屏幕上 我期望得到相同的输出,但是没有使用必需的方法 这就是我在Java中所做的package main
import "fmt"
func main() {
var N int
fmt.Scan(&N)
for a := 0; a < N; a++ {
var X int
var res int = 0
fmt.Scan(&X)
for b := 0; b < X; b++ {
var Y int
fmt.Scan(&Y)
if Y > 0 {
res = res + Y*Y
}
}
fmt.Println(res)
}
}
import java.util.Scanner;
public class SumSquares {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt(), m, num;
int i = 0;
while (i < n) {
int j = 0, sum = 0;
m = in.nextInt();
while (j < m) {
num = in.nextInt();
if (num > 0) {
sum += num*num;
}
j++;
}
System.out.println(sum);
i++;
}
}
}
答案 0 :(得分:1)
Go没有其他语言可能熟悉的while
,until
或foreach
循环构造。在Go中,for
和range
语句将它们全部替换:
// Three expressions, i.e. the usual
for i := 0; i < n; i++ {
}
// Single expression; same as while(condition) in other languages
for condition {
}
// No expressions; endless loop, i.e. same as while(true) or for(;;)
for {
}
// for with range; foreach and similar in other languages. Works with slices, maps, and channels.
for i, x := range []T{} {
}
如果不允许使用Go的单循环构造,则可以使用递归或the goto
statement:
package main
import (
"fmt"
)
func main() {
var N int
fmt.Scan(&N)
fmt.Println(f(N, 0))
}
func f(n, sum int) int {
if n == 0 {
return sum
}
var Y int
fmt.Scan(&Y)
if Y > 0 {
sum += Y * Y
}
return f(n-1, sum)
}
使用goto
:
package main
import (
"fmt"
)
func main() {
var N, Y, sum int
fmt.Scan(&N)
again:
fmt.Scan(&Y)
if Y > 0 {
sum += Y * Y
}
N--
if N > 0 {
goto again
}
fmt.Println(sum)
fmt.Println(43)
}