Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为Java初学者复制字符串n次_Java_String_While Loop_Copy_Concatenation - Fatal编程技术网

为Java初学者复制字符串n次

为Java初学者复制字符串n次,java,string,while-loop,copy,concatenation,Java,String,While Loop,Copy,Concatenation,我正在学校学习AP计算机科学课程,想知道如何回答这个问题: 编写一个名为copies的方法,该方法以字符串s和非负整数n作为参数,返回由s的n个副本串联而成的字符串 我已经试过了,但不能将字符串相乘: public String copies (String s, int n) { int copyCount; copyCount = 0; while ( n > 0 ) { s = s * n; n = n - 1; }

我正在学校学习AP计算机科学课程,想知道如何回答这个问题:

编写一个名为copies的方法,该方法以字符串s和非负整数n作为参数,返回由s的n个副本串联而成的字符串

我已经试过了,但不能将字符串相乘:

public String copies (String s, int n) {
   int copyCount;
   copyCount = 0;
      while ( n > 0 ) {
         s = s * n;
         n = n - 1;
    }
    return s;
}
我知道以前也回答过类似的问题,但我正在寻找一种方法,使用only if语句和while循环来实现这一点。到目前为止,我们班还没有取得任何成绩,所以如果有人知道如何做到这一点,我们将不胜感激


更新:当我使用0作为n时,我还需要能够显示“”。

类似的内容应该可以满足您的需要

更新为在n=0时显示“”

public String copies(String s int n) {
    StringBuilder sb = new StringBuilder();
    if (n > 0) {
        int i = 0;
        while (i < n) {
           sb.append(s);
           i++;
        }
    }
    return sb.toString();
}
公共字符串副本(字符串s int n){
StringBuilder sb=新的StringBuilder();
如果(n>0){
int i=0;
而(i
这里有一种方法

String copies(String s, int n) {
  StringBuilder builder = new StringBuilder();
  for (int count = 0; count < n; ++count)
    builder.append(s);
  return builder.toString();
}
字符串副本(字符串s,int n){
StringBuilder=新的StringBuilder();
用于(整数计数=0;计数

我选择将
用于
而不是一段时间(用于清洁),但是您应该能够非常轻松地制作所需的任何mod:p

如果您想创建字符串s的int-n副本,您应该尝试以下方法

// Return a String, containing n copies of s.
public static String copies(String s, int n) {
  // More then 0?
  if (n > 0) {
    StringBuilder sb = new StringBuilder();
    int i = 0;
    while (i < n) {
      sb.append(s);
      i++;
    }
    return sb.toString();
  }
  // Just return the input.
  return s;
}
//返回一个字符串,其中包含s的n个副本。
公共静态字符串副本(字符串s,int n){
//超过0?
如果(n>0){
StringBuilder sb=新的StringBuilder();
int i=0;
而(i
ahem。您尝试过什么?您可以通过编写代码来回答。如果
,您不需要
,而
就足够了。发布一些您尝试过的内容!为什么不尝试使用if语句,看看它是否与您的atempts一起工作?使用
if
,您可以实现什么功能?它可以防止非负intsCan,您可以解释StringBuilder吗?我也没有做到这一点。
非负
表示正或零。OP明确指出:“非负整数n”您可以通过执行String s=“a”连接字符串;s=s+“b”,这将返回阿布:但这是低效的。StringBuilder是连接字符串的一种更有效的方法,是标准JDK的一部分。您能解释一下StringBuilder吗?我也没有做到这点。@WaldoAldoOswaldo这是java中使用可变字符串的首选方法。您也可以使用
StringBuffer
,但这是大多数人不赞成的。关键是要避免字符串连接。你能解释一下StringBuilder吗?字符串在Java中是不可变的。当您在java中的两个字符串上使用
+
运算符(例如
“Hello”+“World”
)时,String类使用内部StringBuilder(或在较旧的java版本上使用StringBuffer)来执行该操作。看一看