1

Мне нужно объединить несколько строк, но это пример кода: Дело в том, что после конкатенации java doenst читает новую строку как заданный ранее URL-адрес. Это может быть непросто сделать, но Я застрял здесь два часа и не получил ответа в своих исследованиях, как это сделать в одном цикле, кто-нибудь может помочь? Заранее спасибо!Конкатенированный цикл в java

public HttpRequest(String query) throws IOException{ 

    engine0="http://google.com/search?q="; 
     engine1="http://www.bing.com/search?q="; 

    for(urlCountDown=2;urlCountDown!=-1;urlCountDown--){ 

    try { 

     engineSearch=("engine"+urlCountDown); 
     // Fixed search URL; drop openConnection() at the end 
     url = new URL(engineSearch+URLEncoder.encode(query)); 
     System.out.println(url); 
} 
+2

'engineSearch = ("двигатель" + urlCountDown);' не собирается присвоить значение '' engine0' или engine1' к переменной 'engineSearch'. – GriffeyDog

ответ

3
engineSearch=("engine"+urlCountDown); 

Это не значит,

engineSearch = engine1; 

ни

engineSearch = engine0; 

, поэтому Java не распознает его как URL.

Результаты будут

engineSearch = "engine2_yourEncodedQuery_"; 

и

engineSearch = "engine1_yourEncodedQuery_"; 

, если вы хотите, чтобы получить различные строки с помощью цикла, вы должны использовать массивы или списки

2

Есть пара вопросов с кодом. При первом запуске он ищет engine2, но этого не существует. Кроме того, вы пытаетесь получить доступ к переменным путем их конкатенации, но это не сработает. Когда ваш код работает, вы получаете engine0+whateverisinthisvariable, а не значение переменной. Для того, что вы пытаетесь сделать, вы должны использовать массив.

Попробуйте это:

String[] engine = new String[2]; 
engine[0]="http://google.com/search?q="; 
engine[1]="http://www.bing.com/search?q="; 
for(urlCountDown=0;urlCountDown<2;urlCountDown++){ 

    try { 

     engineSearch=engine[urlCountDown]; 
     // Fixed search URL; drop openConnection() at the end 
     url = new URL(engineSearch+URLEncoder.encode(query)); 
     System.out.println(url); 
} 

Этот цикл будет через оба элемента двигателя и получите вам URL, который вы ищете. Надеюсь это поможет.

+0

Что новичок ошибка, полностью забыл массивы! Ty –

5

Вы должны использовать массив сделать это.

String engine[2]; 
engine[0] = "http://google.com/search?q="; 
engine[1] = "http://www.bing.com/search?q="; 

for(int i = 0; i < 2; i++) { 
    url = new URL(engineSearch+URLEncoder.encode(query)); 
    System.out.println(url); 
} 
+0

Что за ошибка новичка, полностью забыл массивы! Ty –

+0

Да, к сожалению, большинство языков не имеют функции типа 'eval', которая позволяет вам динамически строить код. –

Смежные вопросы