有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java每20个字符分割一个字符串,然后将每个部分打印到控制台

好的,我正在尝试为一个更大的项目做一些事情,我需要每20个字符分割一个字符串,然后在每个输入之间延迟1秒将每个部分打印到控制台 我试着做:

if  (x==true){
  String[] Text = JOptionPane.showInputDialog("Input string").split(null, 20);
  for (int i = 0; i < Text.length; i++) {
    String splitText = (Text[ i ]);
    try {
      Thread.sleep(1000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    System.out.println(splitText);
  }
}

但是它不起作用(对不起,我对java不是很有经验。)
有人知道什么会起作用吗
(如果您能将我的代码改写成可以工作的代码并加以解释,那将是非常棒的,但我们非常感谢您的帮助)


共 (3) 个答案

  1. # 1 楼答案

    基本问题是你的系统。出来println在for循环之外,您最多只能得到1个结果,下面我为您重做了基本结构

    另外,我对Java很生疏,但我很确定equals运算符是==不是=(single=是赋值)

    还有什么是splitText,您不定义它或分配它的值

    if  (x==true){
      String[] Text = JOptionPane.showInputDialog("Input string").split(null, 20);
      for (int i = 0; i < Text.length; i++) {
        String memes = (Text[ i ]);
        Thread.sleep(500);
        System.out.println(splitText);
      }
    }
    
  2. # 2 楼答案

    这只鹬应该能做到:

    if (x){
        String text = JOptionPane.showInputDialog("Input string");
        while (true) {
            if(text.length()>=20){
                String splitText = text.substring(0, 20);
                System.out.println(splitText);
                text = text.substring(20, text.length());
    
            } else {
                System.out.println(text);
                break;
            }
    
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    

    记住Thread.sleep(1000)将停止整个主线程。您可以使用类似于这个概念的东西(线程)来避免这个问题https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html

  3. # 3 楼答案

    这种方法无法实现您的目标。您可以阅读拆分方法api。 围绕给定正则表达式的匹配项拆分此字符串。 此方法返回的数组包含此字符串的每个子字符串,该子字符串由与给定表达式匹配的另一个子字符串终止,或由字符串结尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式与输入的任何部分都不匹配,则结果数组只有一个元素,即该字符串。 limit参数控制应用阵列的次数,因此会影响结果阵列的长度。如果限制n大于零,则模式最多应用n-1次,数组长度不大于n,数组的最后一个条目将包含最后一个匹配分隔符之外的所有输入。如果n为非正,则图案将被应用尽可能多的次数,并且阵列可以具有任意长度。如果n为零,则将尽可能多次应用该模式,数组可以有任何长度,并且将丢弃尾随的空字符串。 例如,字符串“boo:and:foo”使用这些参数生成以下结果: 正则表达式极限结果

    : 2 { "boo", "and:foo" } 
    : 5 { "boo", "and", "foo" } 
    : -2 { "boo", "and", "foo" } 
    o 5 { "b", "", ":and:f", "", "" } 
    o -2 { "b", "", ":and:f", "", "" } 
    o 0 { "b", "", ":and:f" } 
    

    如果我这样做,我将使用代码blow:

    String input = JOptionPane.showInputDialog("Input string");
            int count = input.length() / 20 + 1;
            for(int  i = 0;i < count;i++)
            {
                System.out.println(input.substring(i * 20, (i + 1) * 20 >= input.length() ? input.length() : (i + 1) * 20));
            }