Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Нужна помощь

34K
10 ноября 2011 года
Алексей 24
35 / / 10.11.2011
Здравствуйте. Я новичок. Была задача написать программу для сортировки числового массива по возрастанию. Среда для написания NetBeans IDE 7.0.1?
Вот собственно код:



package Sortarray;
public class Sorting {

public static void main (String[] args)
{

}
public static void formethod ()
{
double a [] = new double [] {0,1.5,16,-1.5,663,-30,7,3,8,1,2};
int i;
double t=0;
for (i=0; i<a.length; i++)
{ if(a>=a[i+1]);
t=a;
a=a[i+1];
a[i+1]=t;
System.out.println(a);
}
/*for (j=0; j<a.length; j++)
{ if a[j+1]<=a[j];*/

}
Программа запускается без ошибок, но ... ничего не выводит. Кто более опытный - прошу помочь. Спасибо.
14
10 ноября 2011 года
Phodopus
3.3K / / 19.06.2008
вы сами писали код?
скажите, что делает функция public static void main (String[] args) ?
37K
11 ноября 2011 года
freets
97 / / 15.10.2010
Начнём с того, что здесь одной фигурной скобки не хватает... - закрой свой formethod() [корректнее будет forMethod(), хотя здесь название не несёт никакой смысловой нагрузки]. И почитай хотя бы пару первых страниц из любого учебника по java, в частности, про метод main.
23K
11 ноября 2011 года
rafaelkyrdan
123 / / 03.05.2011
Алгоритм пузырьковой сортировк на пхп:

Код:
function display($array = array())
{
    foreach($array as $key=>$var)
    {
        echo "$var";
    }  
}

function bubbleSort($array)
{    
    $size = count($array)-1;
    $arr = $array;
    sort($arr, SORT_NUMERIC);
   
    while($arr != $array)
    {
        for($i=0; $i<$size; $i++)
        {
            $left = $i;
            $right = $i+1;
            if($array[$left] > $array[$right])
            {
                $first = $array[$right];
                $second = $array[$left];
                $array[$i] = $first;
                $array[$i+1] = $second;    
            }

        }
       
        display($array);
        echo "</br>";
       
        if($arr == $array)
        {
            return false;
        }  
    }
   
}

$sort = array(3,5,2,9,8,1,6,4,7);
display($sort);

echo "</br>";
bubbleSort($sort);
23K
11 ноября 2011 года
rafaelkyrdan
123 / / 03.05.2011
Перевел на джаву сортировка по возростанию методом пузырьковой сортировки:

Код:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import static java.lang.System.out;
import java.util.ArrayList;
import java.util.Collections;

/**
 *
 * @author Admin
 */
public class ExBubSort {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        ArrayList<Integer> sort = new ArrayList<Integer>();
        Collections.addAll(sort, 3,5,2,9,8,1,6,4,7);
        out.println("Not sorted list"+sort.toString());
        out.println("Sorting process");

        ExBubSort example = new ExBubSort();
        example.bubbleSort(sort);
    }
   
    void bubbleSort(ArrayList<Integer> list)
    {    
        int size = list.size()-1;
            ArrayList<Integer> arr = (ArrayList<Integer>) list.clone();
        java.util.Collections.sort(arr);

        while(!arr.equals(list))
        {
            for(int i=0; i<size; i++)
            {
                int left = i;
                int right = i+1;
                int first;
                int second;
                if((int)list.get(left) > (int)list.get(right))
                {
                    first = (int)list.get(right);
                    second = (int)list.get(left);
                    list.set(left, first);
                    list.set(right, second);    
                }

            }

            out.println(list);
            out.println("");

            if(arr.equals(list))
            {
                break;
            }  
        }

    }
}
34K
14 ноября 2011 года
Алексей 24
35 / / 10.11.2011
Цитата: Phodopus
вы сами писали код?
скажите, что делает функция public static void main (String[] args) ?



Ну, насколько я нашел ее описание, то она является базовой точкой входа, для выполнения любой программы, без объявления этого метода, программа работать не будет.
Просто не пойму, где зарыта собака.

244
14 ноября 2011 года
UAS
2.0K / / 19.07.2006
Зарыта она в том, что formethod() надо вызвать в main()
240
15 ноября 2011 года
aks
2.5K / / 14.07.2006
Цитата: Алексей 24
Ну, насколько я нашел ее описание, то она является базовой точкой входа, для выполнения любой программы,


Ну так и вы осознали что это значит? )

34K
15 ноября 2011 года
Алексей 24
35 / / 10.11.2011
Цитата: aks
Ну так и вы осознали что это значит? )



Если я Вас правильно понял, все объявленные за Main () методы, нужно вызывать в теле Main
У меня теперь другая проблема, я переписал код, но не могу вывести принтлайном массив b, потому что Main ее не видит, эту переменную b я выделил курсивом

package Sortarray;
import java.lang.System.*;
public class Sorting {
public static void main (String[] args)
{
Sorting vivod=new Sorting();
System.out.println(vivod.ForMethod(b));
}

public void ForMethod(double b [])
{
double a [] = new double [] {0,1.5,16,-1.5,663,-30,7,3,8,1,2};
int i;double t;
do
{for (i=0; i<i+1; i++)
{ if (a<=a[i+1]);
do {continue;}
while (a>=a[i+1]);
if (a>=a[i+1]||a[i+1]<=a[0]);
t=a[0];
a[0]=a[i+1];
a[i+1]=a;
t=a[1];
System.arraycopy(b, 0, a, 0, a.length);

}
}



while (i<a.length-1);

}
}

244
15 ноября 2011 года
UAS
2.0K / / 19.07.2006
Почитайте уже учебник по языку. Естественно ничего не выведется, т.к. метод ничего не возвращает.
У вас метод делает работу, после чего завершается. Вам надо вернуть массив.
Читайте про return и что такое void.
240
16 ноября 2011 года
aks
2.5K / / 14.07.2006
Цитата: Алексей 24
Если я Вас правильно понял, все объявленные за Main () методы, нужно вызывать в теле Main


Нет не правильно. С Main - начинается выполнение программы и в ней же заканчивается. Все что написано в Main - выполнится. Все вызовы методов будут вызваны и все.

34K
16 ноября 2011 года
Алексей 24
35 / / 10.11.2011
Я так тоже пробовал, задать у ForMethod значение double вместо void вернуть массив в вызове cвоего ForMethod в Main но видимо действие return не распостраняется на массивы. Может я неправильно писал, как только делаю ф-ю double, среда мне сама говорит, что нужно дописать return. Дописываю return b или даже b [] - в обеих случаях ошибка типа "несовместимость типов". Получается замкнутый круг какой-то. Или нужен другой оператор, или я не правильно понимаю как пользоваться return.
240
16 ноября 2011 года
aks
2.5K / / 14.07.2006
Блин да почитайте же вы уже любой учебник по языку. Неоднократно же уже советовали. Как можно писать какой то код не разобравший в основах языка?
244
16 ноября 2011 года
UAS
2.0K / / 19.07.2006
Вы сначала код оформите и скажите, что же конкретно хотите вернуть? Какой тип данных? b[] вернуть нельзя. Да и вообще b в коде нигде не объявлена, потому код даже не должен компилироваться.

И да, полистайте первые 100 страниц учебника.
77K
18 ноября 2011 года
xvalik
1 / / 18.11.2011
даже незнаю
34K
18 ноября 2011 года
Алексей 24
35 / / 10.11.2011
Цитата:
скажите, что же конкретно хотите вернуть? Какой тип данных? b[] вернуть нельзя.


Спасибо почитаю и объявлю b отдельно.
Ну я так и думал, что return не возвращает массив.
Я как раз и хотел вернуть массив в функцию ForMethod c выводом на печать.
Т.е. по моей логике принтлайн должен был бы при выводе на печать ForMethod, который я подцепил на vivod вывести именно массив, который бы вернулся через return при вызове ForMethod.

244
18 ноября 2011 года
UAS
2.0K / / 19.07.2006
Вы можете вернуть массив из метода. Т.к. возвращается не сам объект, а лишь ссылка на него. Просто синтаксис return b[] неверный.
А вот
int[] ForMethod() {
int[] k = new int[2];
return k;
}
верно
34K
20 декабря 2011 года
Алексей 24
35 / / 10.11.2011
Написал код, пока в одном главном методе
При варианте 1- массив сортируется по возрастанию, при 2- по убыванию
Единственное, хотел сделать чтобы при вводе других вариантов, например 0 или больше 2, вместо перехода на строчку
"Вы ввели неверный вариант, сортировка не произойдет"
Программа осуществляла бы возврат на ввод вариантов.
Т.е. переходила на строчку: System.out.println("Введите 1 - по возростанию, 2- по убыванию:")
Как это можно сделать? Спасибо



package Sortarray;
import java.lang.System.*;
import java.lang.String.*;


public class BubbleSorting {





public static void main (String[] args) throws Exception

{
//обьявление начального массива а, счетчика i j, временной t
double a [] = new double [] {0,1.5,16,-1.5,663,-30,7,3,8,1,2};
int i,j,c = 0; double t; povtor:;
//String kl;
//BufferedReader read= new BufferedReader(new InputStreamReader(System.in));
System.out.println("Количество элементов:"+a.length);
System.out.println("До сортировки:");
for (i=0; i<a.length;i++)
System.out.println ("a"+i+"="+a);



povtor:System.out.println("Введите 1 - по возростанию, 2- по убыванию:");
System.out.println ("Введите вариант:");
c=System.in.read();

while (c==49||c==50)
{ System.out.println("Вы ввели:"+" "+ (char)c );
if ( c==49)
System.out.println ("Вы выбрали сортировку по возрастанию");


if(c==50)
System.out.println ("Вы выбрали сортировку по убыванию");

//else if(c!=49)


switch (c)
{ case 49:
{ System.out.println("Сортируем по возрастанию:");
for (i=0; i<a.length-1;i++)
for (j=0; j<a.length-1;j++)
{
if (a[j]>=a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
break;
}

case 50:
{ System.out.println("Сортируем по убыванию:");
for (i=0; i<a.length-1;i++)
for (j=0; j<a.length-1;j++)
{
if (a[j]<=a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;

}


}
break;


}



}
break;
}
if (c<49||c>50)
{System.out.println ("Вы ввели неверный вариант, сортировка не произойдет");

}
System.out.println ("После сортировки");
for (i=0; i<a.length;i++)

System.out.println ("a"+i+"="+a);










}
}
277
20 декабря 2011 года
arrjj
1.7K / / 26.01.2011
 
Код:
c=-1
while (c<49 || c>50)
{
System.out.println ("Введите вариант:");
c=System.in.read();
}
34K
20 декабря 2011 года
Алексей 24
35 / / 10.11.2011
Цитата: arrjj
 
Код:
c=-1
while (c<49 || c>50)
{
System.out.println ("Введите вариант:");
c=System.in.read();
}



arjj Cпасибо. А просто передать управление на ту строку с которой начинается ввод варианта никак нельзя?

277
20 декабря 2011 года
arrjj
1.7K / / 26.01.2011
break ?
так поидее должно работать. goto в java нет
34K
20 декабря 2011 года
Алексей 24
35 / / 10.11.2011
Через метки пробовал - не работает.
Читал, что метки работают только в циклах типа for do while при передаче управления в цикл по условию внутри цикла.
34K
20 декабря 2011 года
Алексей 24
35 / / 10.11.2011
В принципе пытался так
Код:
povtor: while (c==c)
     {        
       System.out.println("Введите 1 - по возростанию, 2- по убыванию:");
       System.out.println ("Введите вариант:");        
       c=(char)System.in.read();
     
       System.out.println("Вы ввели:"+" "+ c );    
       if ( c=='1')
       System.out.println ("Вы выбрали сортировку по возрастанию");
         
       
       if(c=='2')    
       System.out.println ("Вы выбрали сортировку по убыванию");
       
       else break povtor;

Но повтор почему-то не выполняется все равно
14
20 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
видимо потому что его надо пихнуть внутрь цикла, не?
И вообще continue решает.
34K
21 декабря 2011 года
Алексей 24
35 / / 10.11.2011
[QUOTE=Phodopus;363850И вообще continue решает.[/QUOTE]

Через continue заработало, спасибо.
34K
22 декабря 2011 года
Алексей 24
35 / / 10.11.2011
Есть еще одна заморочка, которую я хотел бы воплотить - заполнение массива числами через ввод с клавиатуры. Прошу помочь, кто знает, спасибо.
Этот кусок кода я хочу объединить с уже готовым кодом сортировки.
В общем попытался написать так:
Код:
package Sortarray;
import java.io.*;
import java.lang.System.*;
public class BubbleSorting {

 static int i,j; static char c; static double t,count; static int m; static double []a=new double[1];  
      //Заполнения массива значениями Введенными с клавиатуры    
         
 public static void main (String[] args) throws IOException
  {         int length=a.length;
                System.out.println("Введите массив целых чисел, чтобы закончить ввод - введите англ. b");
                //BufferedReader read=new BufferedReader(new InputStreamReader(System.in));
       
               
                   
                       for (int k=0;count!='b';k++)    
                 
                      {          
                       
                       a[k]=count=System.in.read();  
                       System.out.println("a"+k+"="+a[k]);
                       length=a.length+1;              
                       a=new double[length];
                       
                      }
                                                     
                                                 
                                                   
 Sortirovka(a);  
  }

Ну дальше погнал работать метод сортировки.
Ввод значений происходит и здесь во-первых:
Ф-я read() возвращает символьные значения и сразу переводит их в символьный код, к примеру я ввожу "1", System.out.println("a"+k+"="+a[k]); выводит 49. Ну прочитал, что она работает по такому принципу, ладно.
Во-вторых непонятно почему автоматически заполняется следующий за уже заполненным элементом элемент массива, например если а[0]=49(целочисленное зн. от введенного "1"), то a[1] автоматически заполняется как 10.0, если a[2], к примеру "2" или код 50 то a[3] =10.0 и т.д.

Кто может что-то подсказать, в чем есть ошибки и где сделать исправления?
277
23 декабря 2011 года
arrjj
1.7K / / 26.01.2011
 
Код:
try {
      BufferedReader is = new BufferedReader(
        new InputStreamReader(System.in));
      line = is.readLine();
      val = Integer.parseInt(line);
    } catch (NumberFormatException ex) {
      System.err.println("Not a valid number: " + line);
    } catch (IOException e) {
      System.err.println("Unexpected IO ERROR: " + e);
    }


Или

 
Код:
java.util.Scanner s = new java.util.Scanner(System.in);
int totalDigitsNumber = s.nextInt();
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог