【问题标题】:Multiplying strings乘以字符串
【发布时间】:2013-01-16 17:20:50
【问题描述】:

如果你有一个字符串例如:

String = "Hello world";

如何让它打印出 (n) 次?

例如

System.out.print("Hello world" * 5);

给出输出:

Hello world
Hello world
Hello world
Hello world
Hello world

现在显然我不能像以前那样将字符串乘以 5。

我知道我必须将字符串转换为整数可以使用的东西?但是我该怎么做呢?

【问题讨论】:

  • “Hello world”究竟会翻译成什么数字?
  • 递归也可以检查我的答案

标签: java string integer


【解决方案1】:

你会使用循环:

for(int i = 0; i < 5; i++) {
   System.out.println("Hello world");
}

但我认为你需要在这里学习你的编程基础——一本关于 java 的好书对你来说比在 SO 上发布这样的问题更有用。

【讨论】:

    【解决方案2】:

    在 Python(我也认为是 Ruby)中,您可以通过将字符串“乘以”数字来连接字符串:

    >>> print "Hello" * 5
    HelloHelloHelloHelloHello
    

    在 Java 中,有很多方法可以做到这一点,从循环开始。顺便说一句,您可以在 Java 中多次连接字符串:

    package test;
    
    public class test {
    
    public static void main(String[] args) {
    
        String s1 = "hello";
        for (String s = s1; s.length() <= 5 * s1.length(); s = s + s1)
            System.out.println(s);
    }
    
    }
    

    现在,上面是一个坏主意。 :-) 如果重复,请不要这样做,bc 每次连接字符串并分配一个新字符串时,都会创建一个新字符串并丢弃旧字符串 - 如果您多次这样做,效率会非常低。

    总的来说,之前的海报是对的:选择一本关于 Java 的书——更好的是 Python——然后学习!

    【讨论】:

      【解决方案3】:

      您可以创建一个方法来获取字符串和需要打印字符串的值,如下所示:

      public String multiplyString(String s,int i){
         String result="";
         for(;i<0;i--){
             result += " "+result;   //for appending strings
         }
      return result;
      }
      

      然后调用这个方法:

      System.out.print(multiplyString("Hello wrold",5));
      

      【讨论】:

      • 谢谢,这正是我需要的方法:)
      【解决方案4】:

      嘿,也学习一下递归方法

      public static void main(String[] args) throws IOException {
      
          test("Hello World ",5);
      
      }
      
      public static void test(String s,int x){
      
            if(x==0)return;
                System.out.println(s);
            test(s,--x);
      
      }
      

      输出

      Hello World 
      Hello World 
      Hello World 
      Hello World 
      Hello World
      

      【讨论】:

      • 如果你使用test(s,x--);,它不会有太大的不同,但是你可以只减少一行。但我认为使用递归会很昂贵。不是吗?
      • @smit 谢谢,但应该是 test(s,--x)
      猜你喜欢
      • 2020-03-26
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 2012-08-04
      • 2016-12-16
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      相关资源
      最近更新 更多