2016-10-10 52 views
1

好吧,我正在尝试为较大的项目做些事情,并且我需要每20个字符分割一个字符串,然后打印每个部分以延迟1第二每个输入 之间我试图做的:每20个字符分割一次字符串,然后将每个部分打印到控制台

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,对不起。)
有没有人有什么工作什么想法?
(如果您可以将我的代码重写为某些有用的东西并解释它会很棒,但任何帮助都会被赞赏)。

+0

第一个语句'if(x = true){'没有做你认为它的工作。 if(x == true){'**或**'if(x){'确实。有一个'=',那就是赋值 - 然后评估为'true'。 –

+0

是的,对不起,这只是一个示例条件,我把它放在了使其更加一般化,以便更容易理解我的示例,我没有真正使用它并且if语句实际上正在发生 –

+0

要“分割”一个字符串分成20个字符的块,使用['substring(int beginIndex,int endIndex)'](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#substring-int- int-),例如'str.substring(0,20)','str.substring(20,40)',...,'str.substring(x,str。())' – Andreas

回答

1

的方法可以分裂没有达到你的目标。你可以阅读分割方法API。 将该字符串拆分为给定正则表达式的匹配。 此方法返回的数组包含此字符串的每个子字符串,该字符串由与给定表达式匹配的另一个子字符串终止,或者由字符串的结尾终止。数组中的子字符串按照它们在此字符串中出现的顺序排列。如果表达式与输入的任何部分都不匹配,则结果数组只有一个元素,即该字符串。 极限参数控制模式应用的次数,因此影响结果数组的长度。如果极限值n大于零,那么该模式将最多应用n-1次,数组的长度不会大于n,并且该数组的最后一项将包含超出最后匹配分隔符的所有输入。如果n是非正值,那么该模式将尽可能多地应用,并且该数组可以具有任何长度。如果n为零,则模式将尽可能多次应用,数组可以有任意长度,并且尾随的空字符串将被丢弃。 字符串“嘘:和:富”,例如,产生这些参数如下结果: 正则表达式限制结果

: 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)); 
     } 
+0

谢谢!这很有帮助。 – xenteros

-1

基本问题是你的System.out.println是外面的for循环,你会得到最多1的结果,我已经重做的基本结构下面为您,

也是我生疏Java,但等于运营商我敢肯定是不== =(单=是赋值)

还什么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); 
    } 
} 
+0

好吧,我试图让我的代码看起来更加明智,我忘了将“memes”更改为“splitText”,对不起 –

+0

'split(null,20)'导致'NullPointerException'。 – Andreas

0

这snipet应该做的伎俩:

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

相关问题