Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Условие прерывания цикла


Автор: PrinceOFF 21.4.2016, 10:41
Всем привет.
Не получается организовать условие прерывания цикла (при вводе слова "стоп"). Точнее, условие я организовал, но, я думаю, можно лаконичнее.

Код

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String stop = "стоп";
        ArrayList<String> list = new ArrayList<>();

        while (true) {
            String s = reader.readLine();
            if (s.equals(stop)) break;
            else
                list.add(s);
        }

        for (String s : list) {
            System.out.println(s);
        }
    }
}


Пробовал сделать в одну строку, но не получается. В чем ошибка, натолкните на мысль?
Код

while (!stop.equals(reader.readLine())) {
            String s = reader.readLine();
            list.add(s);
        }

В условии хочу задать, что если "reader.readLine()" будет равняться по значению "стоп", то тело цикла не выполнять. 
В чем ошибка, натолкните на мысль?

P.S. Или у меня нормально написано и не надо ничего выдумывать?

Автор: LSD 21.4.2016, 12:11
Цитата(PrinceOFF @  21.4.2016,  11:41 Найти цитируемый пост)
В чем ошибка, натолкните на мысль?

У тебя дважды вызывается readLine() и каждый раз оно возвращает новую строку.
Код

        String str;
        while (!"stop".equals(str=reader.readLine())){
            list.add(str);
        }

Автор: PrinceOFF 21.4.2016, 15:02
Да, точно. Никак не мог сообразить в условие добавить ссылку и ее же потом использовать..(( Точнее, решил, что инициализировать ее нужно только в теле метода... smile 

Автор: rodomod 26.4.2016, 18:58
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Solutions
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String stop = "стоп";
        ArrayList<String> list = new ArrayList<>();

        while (true) {
            String s = reader.readLine();
            if (s.equals(stop)) break;
            else
                list.add(s);
        }

        for (String s : list) {
            System.out.println(s);
        }
    }
}

ну у меня скомпилировало файл сразу ;
но вывода никакого нет ... (водемо я lox файл не вписал для считывания){
                  widimo(так и есть){
                  return null;
                     }

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Usloviye-preryvaniya-tsikla-id5718844cae2015ac0b8b4567#findElement_E7045_571f9015ae2015cf2662def7_0

Автор: rodomod 26.4.2016, 19:54

Код



import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Solutions
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String stop = "стоп";
        ArrayList<String> list = new ArrayList<>();

        while (true) {
            String s = reader.readLine();
            if (s.equals(stop)) break;
            else
                list.add(s);
        }

        for (String s : list) {
            System.out.println(s);
        }
    }
}


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Usloviye-preryvaniya-tsikla-id5718844cae2015ac0b8b4567#findElement_E7045_571f9d5dae20155c3562dfd1_0

Автор: rodomod 27.4.2016, 15:43
Код

import java.io.*; 

public class ExFile {
public static void outFile(String str) {
String fileName="C:/Users/admin/Documents/simvol_En.txt";
boolean isAppend=false;
try (FileWriter writer=new FileWriter(fileName , isAppend)) {
writer.write(str);
}catch(IOException ex){
System.out.println(ex.getMessage());
}
}
public static void main(String[] args) {

String fileName = "E:a.txt"; 

FileInputStream inputStream = null; 

try {
byte[] buffer = new byte[95]; 
String str="";
inputStream = new FileInputStream(fileName); 
int total = 0; 
int nRead = 0; 

while ((nRead = inputStream.read(buffer)) != -1) {

System.out.println(new String(buffer)); 
total += nRead;

}
System.out.println("Read " + total + " bytes");

str=new String(buffer,"UTF-8"); 
outFile(str);
} catch (FileNotFoundException ex) {

System.out.println("Unable to open file '" + fileName + "'"); 

} catch (IOException ex) {

System.out.println("Error reading file '" + fileName + "'"); 

} finally {

try {

if (inputStream != null) {

inputStream.close(); 
}

} catch (IOException e) {

}

}
}
}


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Usloviye-preryvaniya-tsikla-id5718844cae2015ac0b8b4567#findElement_E7045_5720b3f5ae2015e51062e1b4_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)