我如何摆脱最后的逗号? 爪哇

如何解决我如何摆脱最后的逗号? 爪哇

我正在处理一项任务,代码运行良好,除了一个小问题。

例如,最后它应该说“t,e,s,t”,但它打印出“t,t,”。

import javax.swing.JOptionPane;
public class program {
    public static int divide(String input)   {
        int length=0; 
        String output = "";
        for (int i=0; i<input.length(); i++) {
            length++;
            output += input.charAt(i);
            output += ",";
        }
        JOptionPane.showMessageDialog(null,"Eingabe: " +input+ "\nAnzahl der Zeichen: " +length+ "\nZeichen: \n" +output);
        return length;
    }
}

我只想对那些计划提供提示的人说,请注意这是一项任务,因此我实际上不允许对其进行任何重大更改。该程序必须:

使用for循环解决 输出必须在 JOptionPane 中 它必须在一个方法中(因为稍后我必须在 main-method 中编写一个 inputDialog,但现在这并不重要)。

我唯一的问题是,例如,如果字符串是“hello”,则输出必须说(我将用英语翻译输出,因为我在奥地利学校),程序会说“字母:h,l,o”,但它在末尾显示“h,o,”并带有逗号,我该如何摆脱它?

(如果我弄乱了任何变量,我也很抱歉,我在这篇文章中将它们从德语全部重命名为英语,所以我希望我没有弄乱任何一个)

解决方法

一种可能性是打印逗号,而不是在每个字符之后,而是在除第一个字符之外的每个字符之前打印。

,

如果后面还有更多数据,您只想添加一个逗号。所以你可以通过两种方式做到:

  1. 如果字符串中已有内容,则在文本前添加逗号:
        String output = "";
        for (int i=0; i<input.length(); i++) {
            length++;
            if (output.length() > 0) output += ",";
            output += input.charAt(i);
        }
  1. 添加逗号,除非它是最后一个元素:
        String output = "";
        for (int i=0; i<input.length(); i++) {
            length++;
            output += input.charAt(i);
            if (i < input.length() - 1) output += ",";
        }

我个人喜欢第一种方式。

,

你只需要检查是否在最后一个字符处,如果是,则跳出循环。

for (int i=0; i<input.length(); i++) {
    length++; //you do not seem to need this
    output += input.charAt(i);
    if (i==(input.length()-1)) break; //checking whether we are at the last character
    output += ",";
}

另外两个注意事项:

  1. 请遵循 Java Naming Conventions 并使用 PascalCase 作为您的类名,这非常重要;
  2. 如果您使用 StringBuilder 而不是 String 来连接字符并动态构建字符串,这将使您的代码更加高效。 String 是不可变的,对于每个串联,您实际上是在创建它的 new 实例,这很昂贵。
,

您好,我使用 if 语句来检查我们是否在第一个字母处,如果是,则不写逗号,代码如下:

{
        int length = 0;
        String output = "";
        int i = 0;
        
        for ( i = 0; i < input.length(); i++)
        {
            if(i == 0)
            {
                length++;
                output += input.charAt(i);


            }
            else
            {
                output += ",";
                output += input.charAt(i);
                length++;
            }
            
           
        }
        Console.WriteLine(output);
    }
,
  • 您的循环遍历每个字符,附加字符和逗号。这包括最后一个字符。需要想办法避免最后迭代后加逗号;

  • 使用字符串并一个一个地附加字符是非常低效的。这就是 StringBuilder 的设计目的;

  • 长度变量的目的是什么?可以用input.length() - 1;

    代替
  • String.format() 使您的代码更易于阅读,而不是将字符串串联在一起;

  • 不要害怕在整个代码中使用合理的间距。否则很难阅读。

这样的事情应该可以很好地工作:

public static int divide(String input)   {
    int length = input.length() - 1;
    String output;
    if (input.length() == 0) output = input;
    else {
        StringBuilder outputBuilder = new StringBuilder(input.charAt(0));
        for (int i = 1; i < input.length(); i++) {
            outputBuilder.append(',').append(input.charAt(i));
        }
        output = outputBuilder.toString();
    }

    JOptionPane.showMessageDialog(null,String.format("Eingabe: %s\nAnzahl der Zeichen: %d\nZeichen: \n%s",input,length,output);
    return length;
}
,

我会使用 StringJoiner

StringJoiner output = new StringJoiner(",");
for (int i = 0; i < input.length(); i++) {
  length++;
  output.add(input.substring(i,i + 1));
}
JOptionPane.showMessageDialog(… + output.toString());

所以你不能使用 StringJoiner

String output = "";
String comma = "";
for (int i = 0; i < input.length(); i++) {
  length++;
  output += comma;
  output += input.charAt(i);
  comma = ",";
}
,

学习后,请使用 StringJoiner 或类似的现代设备。我最喜欢的链接在底部。您还将有一段时间学习使用 StringBuilderStringBuffer 组合字符串。

与此同时,我仍然喜欢我在第一年编程时学到的东西:当循环中的一次迭代需要不同时,将其从循环中移除。根据我的经验,这通常会给出最清晰的代码。在你的情况下:

    String input = "Wort";
    String output = "" + input.charAt(0);
    for (int i = 1; i < input.length(); i++) {
        output += ",";
        output += input.charAt(i);
    }
    System.out.println("Zeichen: " + output);

输出:

蔡晨:W,o,r,t

在这种情况下,我将循环外的第一个字符添加到输出(不带逗号)中,已经在 output 的声明中。循环从索引 1(不是 0)开始。在循环内,我必须在添加下一个字符之前添加逗号 before。在其他情况下,可以将 last 项目放在循环之外,结果将是相同的。

链接

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res