我做了一個程序,當按下按鈕時刪除字符串中的字符重複。例如,如果字符串是「23332」,則輸出是「23」。現在我的問題是,這真的不適用於10以上的數字。如果字符串是「10」,該程序將其視爲1和0,而不是10。是否有可能以某種方式標記該數字,以便程序知道它是10而不是1和0 ?.提前致謝。這是我的代碼:刪除字符串中的重複數字10以上
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class test extends JFrame implements ActionListener {
private JPanel panel;
private JLabel label;
private JButton ok;
private String str;
public test() {
panel = new JPanel();
ok = new JButton("OK");
ok.addActionListener(this);
str = "10, 11, 12, 13, 10";
label = new JLabel(str);
panel.add(ok);
panel.add(label);
add(panel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new test();
}
@Override
public void actionPerformed(ActionEvent arg0) {
String temp="";
HashMap<Integer,Character> tc = new HashMap<Integer,Character>();
char [] charArray = str.toCharArray();
for (Character c : charArray)
{
if (!tc.containsValue(c))
{
temp=temp + c.toString() + ", ";
tc.put(c.hashCode(),c);
}
}
label.setText(temp);
}
}
編輯:
String temp = "";
HashMap<Integer,Character> tc = new HashMap<Integer,Character>();
String[] strArray = str.split(",");
for(String string : strArray) {
char [] charArray = string.toCharArray();
for (Character c : charArray)
{
if (!tc.containsValue(c))
{
temp=temp + c.toString() + ", ";
tc.put(c.hashCode(),c);
}
}
}
label.setText(temp);
將逗號分隔字符串(http://stackoverflow.com/questions/3481828/how在java中分割一個字符串),修剪每個塊,並將它們解析爲Int(Integer.parseInt),並保持一個整數集來記住你看過的那一個。 –
不,如果你的意思是「45」或「4」和「5」,程序怎麼可能知道?解決這個問題的唯一方法是添加一個分隔字符(就像你在字符串「10,11,12,13,10」中所做的那樣),然後將每個數字存儲在一個「int」數組中,而不是「char」陣列。 – moffeltje
你有上限嗎? –