#java #methods #char #vertical-text
#java #методы #символ #вертикальный текст
Вопрос:
Я пытаюсь напечатать оператор по вертикали, а затем обратно по вертикали с двумя классами, чтобы я мог практиковать несколько навыков. Однако, к сожалению, я не могу заставить свою программу работать и продолжаю получать «ошибку выхода индекса строки из диапазона». Я не уверен, что неправильно вызываю свои функции, потому что я новичок в Java.
class Main {
public static void main(String[] args) {
MyString.verPrint("treasure");
MyString.backPrint("treasure");
}
}
public class MyString {
public static String verPrint(String x){
int i = x.length();
while(0 < i){
x = x.charAt(i) "n";
i ;
}
return(x);
}
public static String backPrint(String x){
int i = x.length() - 1;
while(i >= 0){
i--;
x = x.charAt(i) "n";
}
return(x);
}
}
Комментарии:
1. Как насчет того, чтобы посмотреть на свою логику
verPrint
, следовать ей и записать, какие значенияi
будут приниматься.2. Кроме того, ни один из ваших
Ответ №1:
Проблема с вашим решением заключается в том, что вы обновляете входную строку на первой итерации, присваивая ей символ и новую строку. Следовательно, это не работает для последних итераций. Я внес некоторые изменения в ваш фрагмент. Вы можете следовать за ним —
public class Main {
public static void main(String[] args) {
System.out.println(MyString.verPrint("treasure"));
System.out.println(MyString.backPrint("treasure"));
}
}
class MyString {
String x;
public static String verPrint(String x){
int i = x.length();
String y = "";
int j = 0;
while(j < i){
y = x.charAt(j) "n";
j ;
}
return(y);
}
public static String backPrint(String x){
int i = x.length() - 1;
String y = "";
while(i >= 0){
y = x.charAt(i) "n";
i--;
}
return(y);
}
}
Комментарии:
1. Большое вам спасибо! Теперь я вижу проблему с печатью. Я всегда забываю со статическим методом, что он возвращает и не печатает. Я понимаю, почему нужно было ввести новую переменную, потому что то, как я это сделал, я думаю, запустило бы ее с последней буквы, что не сработало бы. Еще раз спасибо!
2. В любое время! Если это сработало для вас, пожалуйста, отметьте это как ответ. Спасибо!
Ответ №2:
String s="HELLO";
char[] y=s.toCharArray();
for (char x : y) {
System.out.println(x);
}
ВЫВОД
H
E
L
L
O
String S="Hello";
S=new StringBuffer(S).reverse().toString();
System.out.println(S);
char[] y=S.toCharArray();
for (char x : y) {
System.out.println(x);
}
Вы знаете вывод
Ответ №3:
в ваших условиях возникают проблемы при проверке длины и индекса параметра x string:
public class Main {
public static void main(String[] args) {
System.out.println(verPrint("treasure"));
System.out.println("-----------");
System.out.println(backPrint("treasure"));
}
public static String verPrint(String x) {
int i = 0;
String result = "";
while (i < x.length()) {
result = x.charAt(i ) "n";
}
return resu<
}
public static String backPrint(String x) {
int i = x.length() - 1;
String result = "";
while (i >= 0) {
result = x.charAt(i--) "n";
}
return resu<
}
}