Java.Help

  • Автор теми AkeL.php
  • Дата створення

daoway

кот Шрёдингера
Ответ: Java.Help

Помогите решить проблему.
Код:
import java.util.Scanner;
import java.io.File;
import java.io.*;
import java.util.*;
import java.math.*;




class bintodec{
	public static void main(String[] args) throws Exception{
		
		int b,i,j, Step;
		ArrayList myArray = new ArrayList();
		Scanner sc = new Scanner(new File("in.txt"));
        while (sc.hasNextInt()) {	
        	b = sc.nextInt();
        	myArray.add(b);
    	}
    	int COUNT = 4;   	
		int a = COUNT-1;
		int Result = 0;
		
		Object Mass[] = myArray.toArray();
        /* for (j=0; j<4;j++){
			System.out.println(Mass[j] + "\n");		
		}*/
        for (i=0; i<COUNT; i++){       	
			Result += Mass[i] * (int)Math.pow(2, a);
			a--;   
		} 
		System.out.println(Result);

	}
}
Ответ компилятора
Судя по всему массив там не нужен. Зачем ?? Смотри :
Код:
import java.util.ArrayList;
import java.util.Scanner;
import java.io.File;

class bintodec{
	public static void main(String[] args) throws Exception
	{
	int b = 0;	
	ArrayList<Integer> myArray = new ArrayList<Integer>();
	Scanner sc = new Scanner(new File("in.txt"));
        while (sc.hasNextInt()) {	
        	b = sc.nextInt();
        	myArray.add(b);
    	}
    	final int COUNT = 4;
    	int a = COUNT-1;
    	int Result = 0;

    	for(int i=0;i<COUNT;i++)
    		{
    			Result += myArray.get(i) * (int)Math.pow(2,a);
    			a--;
    		}
    	System.out.println(Result);
	}
}
Я уже писал про javadoc, не стесняйтесь туда заглядывать, он хороший :)

А ошибкой компилятор материт тебя как раз справедливо. Даже если и массив, то почему Object а не Integer ? Он и говорит мол, немогу уможить объект на целое. Воот...
 
Останнє редагування:

quant

yeah
Відповідь: Java.Help

кстате в чём может быть проблема ?
Код:
        byte[] core = new byte[1];
        
        // set bits to 1
        core[0] |= 1 << 0;
        core[0] |= 1 << 1;
        core[0] |= 1 << 2;
        core[0] |= 1 << 3;
        core[0] |= 1 << 4;
        core[0] |= 1 << 5;
        core[0] |= 1 << 6;
        // core[0] |= 1 << 7;

        BigInteger big = new BigInteger (core);
        System.out.println (big.toString());
так нормально и выходит 127, но если откомментировать стоку с установкой восьмого бита в 1 выходит -1 вместо 255 !
 

dreamer

Member
Ответ: Відповідь: Java.Help

кстате в чём может быть проблема ?
если откомментировать стоку с установкой восьмого бита в 1 выходит -1 вместо 255 !
Обычно целые числа занимают в памяти компьютеров один, два или четыре байта. Один, как правило, старший бит отводится под знак числа. Знак положительного числа "+" кодируется нулем, а знак отрицательного числа "-" - единицей. Целые числа без знака в однобайтовом формате могут принимать значения от 0 до 255, а со знаком - от -128 до +127.
 

quant

yeah
Відповідь: Java.Help

понял спасибо, для получения числа 255 нужно было 2-байтовый массив { 00000000, 11111111 }
задача была сгенерировать положительное большое число, все биты которого 1, а задаётся количество битов в числе, вышло не очень красиво но так
Код:
    static byte[] generator (int bits) {
        ++bits;
        int it, capacity = (bits / 8) + (bits % 8 == 0?0:1);
        byte[] major = new byte[capacity];
        for(it = 0; it < capacity; ++it) {
            major[it] = -1;
        }
        int zeroPos = --bits % 8;
        for(it = 7; it >= zeroPos; --it) {
            major[0] &= ~(1 << it);
        }
        return major;
    }
    // ну и потом BigInteger bigOne = new BigInteger (generator(8));
жаль нельзя сразу сконструировать массив byte[] major = new byte[capacity] (-1);
 
A

AkeL.php

Guest
Ответ: Java.Help

Задача - сгенерировать случайные числа и занести их в JTextField.

Код:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.math.*;
import java.io.*;


class codegenerator{
   
   codegenerator(){
      WindowUtilities.setNativeLookAndFeel();
      JFrame f = new JFrame("Генератор случайных чисел");
      f.setSize(500,300);
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      Container content = f.getContentPane();
      content.setBackground(Color.white);
      content.setLayout(new FlowLayout());
      
      JButton generate  = new JButton ("Генерировать");
      JButton save  = new JButton ("Сохранить");
      JButton copy = new JButton ("Скопировать в буфер");
      JTextField codeField= new JTextField ("", 25);
      
      content.add(generate);
      content.add(save);
      content.add(codeField);
      content.add(copy);
      
      f.setVisible(true);
      
      FieldHandler generateHandler = new FieldHandler();
      save.addActionListener(generateHandler);
   }
   public void calc(){
      Random r = new Random();
      r.setSeed(12345);
         for(int i = 0;i < 20;i++) {
            codeField.setText(r.nextInt());
         }
   }
   
   class FieldHandler implements ActionListener{
      public void actionPerformed (ActionEvent e){
         new calc();
      }   
   }
   
   
   public static void main(String[] args){
      new codegenerator();
   }
   }

На данном этапе, имею такие ошибки компилятора:


Код:
akel@akel-desktop:~/java/projects/codegenerator$ javac codegenerator.java
codegenerator.java:39: cannot find symbol
symbol : variable codeField
location: class codegenerator
codeField.setText(r.nextInt());
^
codegenerator.java:45: cannot find symbol
symbol : class calc
location: class codegenerator.FieldHandler
new calc();
^
2 errors


Помогите разобраться.
 

daoway

кот Шрёдингера
Ответ: Java.Help

Задача - сгенерировать случайные числа и занести их в JTextField.

Код:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.math.*;
import java.io.*;


class codegenerator{
   
[COLOR="Red"]   codegenerator(){[/COLOR]
      WindowUtilities.setNativeLookAndFeel();
      JFrame f = new JFrame("Генератор случайных чисел");
      f.setSize(500,300);
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      Container content = f.getContentPane();
      content.setBackground(Color.white);
      content.setLayout(new FlowLayout());
      
      JButton generate  = new JButton ("Генерировать");
      JButton save  = new JButton ("Сохранить");
      JButton copy = new JButton ("Скопировать в буфер");
      [COLOR="Red"]JTextField codeField= new JTextField ("", 25);[/COLOR]
      
      content.add(generate);
      content.add(save);
      content.add(codeField);
      content.add(copy);
      
      f.setVisible(true);
      
      FieldHandler generateHandler = new FieldHandler();
      save.addActionListener(generateHandler);
[COLOR="Red"]   }[/COLOR]

   public void calc(){
      Random r = new Random();
      r.setSeed(12345);
         for(int i = 0;i < 20;i++) {
            codeField.setText(r.nextInt());
         }
   }
   
   class FieldHandler implements ActionListener{
      public void actionPerformed (ActionEvent e){
         new calc(); [COLOR="Red"]// ну и зачем тут new ? это ж будто-бы функция ?[/COLOR]
      }   
   }
   
   
   public static void main(String[] args){
      new codegenerator();
   }
   }
Ты свою переменную где определил ? В конструкторе. Область видимости какая ? Вот и... Экивалент того, что ты своял :
Код:
class A
{
	public A()
	{
		String string = new String();
	}
	public void fun()
	{
		System.out.println(string);
	}
}
Не будет оно компилится, да и не должно.
 
A

AkeL.php

Guest
Ответ: Java.Help

JLabel фиксированного рамера. Как? :)
 

GrAndSE

Тёмный
Модератор
Ответ: Java.Help

JLabel фиксированного рамера. Как? :)
Смотря где.
Например, ложится JPanel фиксированного размера, с каким-нибудь GridLayout, BoxLayout - чтобы польностью значится заполнялась панелька. А тудыть закидывается JLabel - разляжется на всю панельку, принимая её размер. Только тут уже возникает вопрос, как делать панели фиксированного размера :) В java tutorial, на который я давал ссылку по поводу layoutов сказано довольно много и довольно доходчиво.
Для более точного ответа, а может и гораздо более красивого решения, нужно зассмотривать конкретные случаи.
 
Зверху