java - 逐字打乱字符串

标签 java string shuffle

美好的一天。我们有一个作业,要求用户在文本区域输入一些内容,当他点击“确定”按钮时,弹出框应该显示他输入的内容是困惑的。 (例如:“Hello World Tuna”变成“olHel odlWr Tnau”)。我设法编写了一个随机播放的代码,但它混淆了所有单词,而不是逐个单词。

我们不允许使用集合或任何东西,那么有没有办法在不使用它们的情况下做到这一点?

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class ChallengeSwapper2 extends JFrame
{
JTextArea txtArea;
JScrollPane scrPane;
JLabel lbl;
JButton btn;
Container con;

public ChallengeSwapper2()
{
    super("Challenge Swapper!");
    setLayout(new FlowLayout());
    con = getContentPane();

    lbl = new JLabel("INPUT");
    lbl.setFont(new Font("Arial", Font.BOLD, 20));
    con.add(lbl);

    txtArea = new JTextArea(10,15);
    txtArea.setWrapStyleWord(true);
    txtArea.setLineWrap(true);
    txtArea.setFont(new Font("Verdana", Font.BOLD, 20));

    scrPane = new JScrollPane(txtArea);
    scrPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    scrPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    con.add(scrPane);

    btn = new JButton("OK");
    btn.setFont(new Font("Arial", Font.BOLD, 10));
    btn.setBounds(10,10, 10, 10);
    btn.addActionListener(new btnFnc());
    con.add(btn);
}

public class btnFnc implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {

        if (txtArea.getText().equals(""))
        {
            JOptionPane.showMessageDialog(null,"Please enter something tanga", "Error Message",JOptionPane.INFORMATION_MESSAGE);
        }
        else 
        {
            String sentence = txtArea.getText();
            String[] words = sentence.split(" ");
            char [] letters = sentence.toCharArray();

            for( int i=0 ; i<words.length-1 ; i++ )
            {
                int j = (char)(Math.random() * letters.length);
                char temp = letters[i]; 
                letters[i] = letters[j];  
                letters[j] = temp;
            }

            String newtxt = new String(letters);

            JOptionPane.showMessageDialog(null, newtxt, "Swapper Challenge", JOptionPane.INFORMATION_MESSAGE);
        }
    }
}


public static void main (String [] args)
{
    ChallengeSwapper2 gui = new ChallengeSwapper2();
    gui.setResizable(false);
    gui.setDefaultCloseOperation(EXIT_ON_CLOSE);
    gui.setBounds(300,300,330,370);
    gui.show();
}
}

最佳答案

您当前的代码将句子拆分为单词,但随后您还将句子转换为字符数组并操作整个句子。

将句子拆分为单词后,您应该将每个单词转换为字符数组,并将每个单词中的字母打乱,然后重构句子。

我鼓励您将改组转移到一种新方法中,以便您可以隔离改组过程以提高清晰度并更容易测试。

关于java - 逐字打乱字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35447225/

相关文章:

javascript - 优雅地打乱 Javascript 数组

java - 如果我的修复包含两个 java 文件,我将在 git 中提交两个文件。 Jenkins 应该生成包含两个 .class 文件但不是所有文件的 .zip 文件

java - 错误 : java. lang.NullPointerException(jtable)

java - Spring MVC Portlet : form not saving data correctly

java - Repaint 不调用 PaintComponent

java - 字符串比较未正确返回?

python - 如何在python中用HTML标签准确地包围单词

java - Java 中动态缩进字符串

java - mapreduce.reduce.shuffle.memory.limit.percent、mapreduce.reduce.shuffle.input.buffer.percent 和 mapreduce.reduce.shuffle.merge.percent

java - 2D int 数组洗牌