每20个字符拆分一次,然后将每个部分打印到控制台

时间:2016-10-10 00:07:54

标签: java string split

好的,我正在尝试为更大的项目做一些事情,我需要每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 个答案:

答案 0 :(得分:1)

方法拆分无法实现您的目标。您可以阅读拆分方法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" } 

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

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));
        }

答案 1 :(得分:0)

这个snipet可以解决这个问题:

as Int.Type

请记住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(); } } } 将停止您的WHOLE主线程。你可以使用类似这个概念(线程)的东西来避免这个问题https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html

答案 2 :(得分:-1)

基本问题是你的system.out.println在for循环之外,你最多得到1个结果,我在下面为你重做基本结构,

我也生锈了Java但是等于运算符我很确定== not =(single = is assignment)

什么是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);
  }
}