我是一个初学者程序员,我不能解决简单的问题你能修好密码吗

ilmyapht  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(326)

这个问题在这里已经有答案了

错误表示在尝试将字符串转换为双精度时已在main中定义变量,然后表示未知符号(3个答案)
“错误:已在方法main(字符串[])中定义了变量键盘”(3个答案)
java:变量已经在方法中定义(4个答案)
java:变量已经在方法main中定义(2个答案)
java编译器错误变量已定义[关闭](3个答案)
15天前关门了。
问题
程序接收一个非负整数序列作为输入,每个数字写在单独的一行上。序列以数字0结束,读取后程序必须完成其工作并打印序列长度(不包括终止数字0)。
不需要读取0后面的数字。
输入格式
输入一个整数序列,以数字0结尾(数字0本身不包括在序列中)。
约束条件
序列中的每个数字都是整数,正数,不超过1000。
输出格式
打印问题的答案。
样本输入0
1
7
9
0
5
样本输出0

我的代码

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String result=("");
        do{
            int a = scan.nextInt();
            int b=a;
            String s=String.valueOf(b);
            result = (result + s);
        }while(a>0);
        int length = result.length();
        System.out.println(length);
    }
}

输出告诉我们

Solution.java:14: error: variable a is already defined in method main(String[])
            int a = scan.nextInt();
                ^
1 error
2hh7jdfx

2hh7jdfx1#

您必须在while循环之外定义变量,否则错误消息会告诉您,您将重新定义它们。
只是放

int a = -1;
int b = -1;
String s = null;

然后在循环中引用这些变量。
此外,还需要一个guard子句来附加到结果中,否则表示序列结束的零将包含在计数中。

if (a > 0) {
  result += s;
}

此外,如果只想计数到零,则不需要结果变量,然后打印其长度,但可以使用整数进行计数,并在每次循环执行时将该整数增加1。
编辑:示例实现

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int count = 0;
    while(scan.nextInt() > 0){
        count++;
    }
    System.out.println(count);
}

相关问题