#java #string
#java #строка
Вопрос:
Ввод:
abc
def
feg
cba
Это то, что я делаю, конечно, неправильно!
import java.util.Scanner;
public class P {
public static void main(String []args){
Scanner x = new Scanner(System.in);
int t = x.nextInt();
for (int j=0; j<t; j ) {
String p[j] = x.nextLine();
}
for (j=0; j<p.length(); j ) {
for (k=0; k<p.length(); k ) {
if (p[j] = reverse(p[k])) {
int q = p[k].length();
System.out.println("" q ((q/2) 1));
}
}
}
}
}
Комментарии:
1. в чем ваша проблема? вы пытаетесь ввести строку вместо int ?
2. Я предполагаю, что сначала должно быть введено несколько строк?
3. Не могли бы вы уточнить свою проблему? Это не дает нам никакого представления о том, что вы пытаетесь сделать.
4. о, да, перед строкой есть int, его 4 … извините
5. и в чем ваша проблема?
Ответ №1:
Сообщение об ошибке, которое вы написали, связано с этим кодом:
for (int j=0; j<t; j ) {
String p[j] = x.nextLine();
}
Если вы хотите создать массив строк, вот как вы это делаете:
String[] p = new String[t];
Он также должен быть объявлен вне вашего for-цикла. Я предлагаю что-то вроде этого:
public static void main(String []args){
Scanner x = new Scanner(System.in);
int t = x.nextInt();
String[] p = new String[t];
for (int j = 0; j < t; j ) {
p[j] = x.nextLine();
}
for (j=0; j<p.length(); j ) {
...
}
}
Новый код, который вы опубликовали:
Scanner x = new Scanner(System.in);
int t = x.nextInt();
String p[] = new String[n];
for (int j = 0; j < t; j ) {
p[j] = x.nextLine();
}
for (j = 0; j < p.length(); j ) {
for(k = 1; k < p.length(); k ) {
if (p[j] = reverse(p[k])) {
int q = p[k].length();
System.out.println("" q ((q/2) 1));
}
Со всеми исправлениями, которые я прокомментировал, ваш код должен выглядеть следующим образом:
Scanner x = new Scanner(System.in);
int t = x.nextInt();
String[] p = new String[t];
for (int j = 0; j < t; j ) {
p[j] = x.nextLine();
}
for (int j = 0; j < p.length(); j ) {
for (int k = 1; k < p.length(); k ) {
if (p[j] = reverse(p[k])) {
int q = p[k].length();
System.out.println("" q ((q / 2) 1));
}
}
}
Комментарии:
1. Теперь я получаю что-то еще: Scanner x = новый сканер (System.in ); int t=x.nextInt(); Строка p[]=новая строка[n]; for(int j=0;jnextLine(); } for(j= 0;jp[k].length(); System.out.println(«» q ((q / 2) 1)); }
2. 11: ошибка: n не может быть разрешен 15: ошибка: j не может быть разрешен 15: ошибка: j не может быть разрешен 15: ошибка: не удается вызвать length() для типа массива String[] 15: ошибка: j не может быть разрешен 16: ошибка: k не может быть разрешен 16: ошибка:k не может быть разрешен 16: ошибка: не удается вызвать функцию length() для типа массива String[] 16: ошибка: k не может быть разрешен 17: ошибка: j не может быть разрешен 17: ошибка: метод reverse(String) не определен для типа P 17: ошибка: k не может быть разрешен17: ошибка: k не может быть разрешен
3.
n
InString[] p = new String[n];
должен быть anint
. Итак, что-то вродеint n = 10;
, или вы можете использовать число напрямую. ИтакString[] p = new String[10];
4. Также важно, чтобы вы писали
String[] p = ...;
, а неString p[] = ...;
(поэтому эти [] идут сразу после строки)5. И во втором цикле for вам нужно убедиться, что вы пишете
int j = 0;
, а не простоj = 0;
Ответ №2:
на первый взгляд кажется, что ваша область видимости отключена. Переменная p в
for (int j=0; j<t; j ) {
String p[j] = x.nextLine();
}
объявляется, а затем немедленно отбрасывается. Вы, вероятно, хотите что-то вроде
String[] p = new String[t];
for (int j=0; j<t; j ) {
p[j] = x.nextLine();
}
аналогично с q в цикле ниже
int q = 0;
for (int j=0; j<p.length; j ) {
for (int k=0; k<p.length; k ) {
if (p[j] = reverse(p[k])) {
q = p[k].length();
System.out.println("" q ((q/2) 1));
}
}
}
Надеюсь, это помогло.
дополнительная информация о области видимости переменных в Java:
Комментарии:
1. Пожалуйста, проверьте, что теперь делать? Я получаю следующее: 11: ошибка: n не может быть разрешен 15: ошибка: j не может быть разрешен 15: ошибка: j не может быть разрешен 15: ошибка: не удается вызвать length() для типа массива String[] 15: ошибка: j не может быть разрешен 16: ошибка: k не может быть разрешенрешаемая 16: ошибка: k не может быть разрешен 16: ошибка: не удается вызвать length() для типа массива String[] 16: ошибка: k не может быть разрешен 17: ошибка: j не может быть разрешен 17: ошибка: метод reverse(String) не определен для типа P 17: ошибка: k не может быть разрешен 17: ошибка: k не может быть разрешен