簡體   English   中英

我如何擺脫最后的逗號? (爪哇)

[英]How do I get rid of the comma at the end? (Java)

我正在處理一項任務,代碼運行良好,除了一個小問題。

例如,最后它應該說“t,e,s,t”,但它打印出“t,e,s,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 循環解決 output 必須在 JOptionPane 它必須在一個方法中(因為我稍后必須在 main-method 中編寫一個 inputDialog,但這現在不重要)。

我唯一的問題,例如 output 將不得不說(我會用英語翻譯 output,因為我在奧地利學校)如果字符串是“你好”,程序會說“字母:h, e, l, l, o”,但它卻說“h,e,l,l,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 命名約定,並使用 PascalCase 作為 class 名稱,這非常重要;
  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);

Output:

Zeichen: W,o,r,t

在這種情況下,我將第一個字符移出循環並將其添加到 output 聲明中的output (不帶逗號)中。 循環從索引 1(不是 0)開始。 在循環內,我必須在添加下一個字符之前添加逗號。 在其他情況下,可能會將最后一項放在循環之外,結果將是相同的。

鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM