Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除循环中最后一个数字后的逗号_Java - Fatal编程技术网

Java 删除循环中最后一个数字后的逗号

Java 删除循环中最后一个数字后的逗号,java,Java,这是我的密码 System.out.println("Enter any integer number "); int number = scan.nextInt(); while (number > 0) { System.out.print( number % 10 + ",");number = number / 10;} 澄清用户是否输入1234 输出应为4,3,2,1 如何编辑代码以删除最后一个num之后的逗号? 类似于4,3,2,1的东西,我会做以下几点 if (numbe

这是我的密码

 System.out.println("Enter any integer number ");
int number = scan.nextInt();
while (number > 0) { System.out.print( number % 10 + ",");number = number / 10;}
澄清用户是否输入1234 输出应为4,3,2,1

如何编辑代码以删除最后一个num之后的逗号?
类似于4,3,2,1的东西,我会做以下几点

if (number > 0) {
    System.out.print( number % 10 );
    number = number / 10;
    while (number > 0) { 
        System.out.print("," + (number % 10) );
        number = number / 10;
    }
}
打印第一个元素,然后为所有其他元素添加一个
。这样,你总是以一个

, X
其他选项正在执行不必要的
if
检查

我会这样做的

while (number > 0) {
    System.out.print(number % 10);
    number = number / 10;
    if (number > 0)
        System.out.print(",");
}

因为每个人都有一个野外活动日,我的:

while (number > 0) {
    System.out.print( number % 10 + ((number/=10)>0 ? "," : ""));
}

这可以做到:

while (number > 0) {
        System.out.print(number % 10);
        number = number / 10;
        if(number!=0) System.out.print(",");
    }

此处显示的所有代码都无效,因为用户可以输入0,并且应打印出0

有效代码如下所示

do
{
    System.out.print( number % 10 );
    number = number / 10;
    if ( number != 0 )
        System.out.print( "," );
} while ( number != 0 );

这是我在此过程中选择的最优雅的方法:

String delimiter = "";
while (number > 0) { 
   System.out.print(delimiter + number % 10);
   number /= 10; delimiter = ",";
}

索蒂里奥斯的解决方案可行,但这里有一个替代方案:

// replacing "scan" with an example number.
int start = 123456789;
for (int number = start; number > 0; number = number / 10) {
    if(number < start)
        System.out.print(',');
    System.out.print(number % 10);
}
//将“扫描”替换为示例编号。
int start=123456789;
对于(整数=开始;数字>0;数字=数字/10){
如果(编号<开始)
系统输出打印(',');
系统输出打印(编号%10);
}
这将使倒计时(数字/10)的计算干涸,但会进行测试,以确定它是否不是每个循环中的第一个。然而,我认为那个测试会比字符串算术更快(“,”+(数字%10))


希望这能有所帮助。

我不会写一行代码来显示OP,我只会说在循环的每个迭代中,在第一次迭代之后,先写逗号。(给一个人一条鱼,他吃一天……)OP清楚地说
(数字>0)
@Sotirios Delimanolis,我认为他犯了和其他人一样的错误。所以OP不知道他们想要什么?@Sotirios Delimanolis。问题不在于他是否知道。问题是,这种错误在初学者中很常见。他们忘记了零是一个有效的数字,可以由用户输入,也可以是负数。我认为OP是在说:“如果输入了0,就不应该打印任何内容。”while循环是否可以嵌套在
If
number/=10
之后?毕竟,如果
(number>0)
第一次计算为false,那么
while
循环也会计算为false,所以如果第一次失败,我们不需要再检查它两次?@nhgrif是的,很好。如果它将第4轮循环到第1轮,这肯定有效。
    int x;
    Scanner scan = new Scanner(System.in);

    System.out.print("Enter integer : ");

    x = scan.nextInt();

    for(x = 4; x>1; x = x-1)
    {
        System.out.print(x + ",");
    }
    if (x != 0) // this is so the last number doesn't end with a comma
    {
        System.out.print(x);
    }