Java 如何从右向左对角打印字符串?
我在网上练习一些java练习,遇到了一个以“对角线”方式打印字符串的练习: 我没问题就完成了。然后我决定试着像这样打印出来: 以下是我迄今为止所尝试的:Java 如何从右向左对角打印字符串?,java,Java,我在网上练习一些java练习,遇到了一个以“对角线”方式打印字符串的练习: 我没问题就完成了。然后我决定试着像这样打印出来: 以下是我迄今为止所尝试的: public class Examples { public static void main(String[] args) { String d = "DIAGONALLY"; String s = ""; for (int i = 0; i < d.length(); i++)
public class Examples {
public static void main(String[] args) {
String d = "DIAGONALLY";
String s = "";
for (int i = 0; i < d.length(); i++) {
System.out.printf("%s%s\n", s, d.charAt(i));
if (i < 6)
s = s + " ";
else
s = s - " ";
}
}
}
公共类示例{
公共静态void main(字符串[]args){
字符串d=“对角”;
字符串s=“”;
对于(int i=0;i
很明显,“else s=s-”;“部分是错误的,但我现在把它放在那里,因为我不知道如何从字符串中减去一个空格。如何打印d的子字符串,从右到左从6对角开始?您不能从字符串中减去字符,但可以使用
substring()
方法提取字符串的一部分,该方法需要两个参数:要包含在“剪切”中的第一个字符的索引,以及要包含的最后一个字符后的第一个字符的索引
但是,在这种情况下,最好为每一行生成一个新的字符串
:新字符串('',x)
将为您提供一个由x
空格组成的字符串。(抱歉,语言混乱:该构造函数存在于C#中,但不存在于Java中。)
稍后(当您开始编写处理大量数据的较大程序时),请注意字符串串联(+
)和子字符串()
越慢,字符串越大。如果需要逐步操作大字符串,则应使用StringBuffer
或StringBuilder
公共类示例{
public class Examples {
public static void main(String[] args) {
String d = "DIAGONALLY";
StringBuilder s = new StringBuilder("");
for (int i = 0; i < d.length(); i++) {
System.out.printf("%s%s\n", s, d.charAt(i));
if (i < (d.length()+1)/2)
s.append(" ");
else
s.setLength(s.length()-1);
}
}
}
公共静态void main(字符串[]args){
字符串d=“对角”;
StringBuilder s=新的StringBuilder(“”);
对于(int i=0;i
StringBuilder
就像一个可扩展的String
。您可以随时使用.append()
添加到它。您还可以设置其长度。因此,要执行s=s-“”
,我只需将其长度设置为比上次少一个
我还将您的硬编码长度6更改为d字符串长度的一半(加上1以使数学运算正常),因此它可以用于任何字符串。使用子字符串()
返回作为此字符串的子字符串的新字符串。子字符串以指定索引处的字符开头,并延伸到此字符串的结尾
您的代码有一个错误,我应该小于5
public class Examples {
public static void main(String[] args) {
String d = "DIAGONALLY";
String s = "";
for (int i = 0; i < d.length(); i++) {
System.out.printf("%s%s\n", s, d.charAt(i));
if (i < 5)
s = s + " ";
else
s = s.substring(1);
}
}
}
公共类示例{
公共静态void main(字符串[]args){
字符串d=“对角”;
字符串s=“”;
对于(int i=0;i
当然,这不是新技术,而是不同的
String d = "DIAGONALLY";
String s = "";
for (int i = 0; i < d.length(); i++) {
//System.out.printf("%s%s", s, d.charAt(i));
System.out.println(s+d.charAt(i));
if (i <6)
s = s + " ";
else
s = s.substring(0,s.lastIndexOf(" "));
}
String d=“对角”;
字符串s=“”;
对于(int i=0;ipublic String substring(int beginIndex)
public class Examples {
public static void main(String[] args) {
String d = "DIAGONALLY";
String s = "";
for (int i = 0; i < d.length(); i++) {
System.out.printf("%s%s\n", s, d.charAt(i));
if (i < 5)
s = s + " ";
else
s = s.substring(1);
}
}
}
String d = "DIAGONALLY";
String s = "";
for (int i = 0; i < d.length(); i++) {
//System.out.printf("%s%s", s, d.charAt(i));
System.out.println(s+d.charAt(i));
if (i <6)
s = s + " ";
else
s = s.substring(0,s.lastIndexOf(" "));
}