View Full Version : سوال: اشکال در دستور new
ravand
پنج شنبه 16 شهریور 1391, 09:38 صبح
سلام
کدهای منو ببینید:
package testi;
import java.util.Scanner;
public class Main
{
public static void main( String[] args )
{
GradeBook Main = new GradeBook("CS101 Introduction to Java Programming" );
myGradeBook.displayMessage();
myGradeBook.inputGrades();
myGradeBook.displayGradeReport();
}
}
اینم کد بعدی:
package testi;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Main
{
public static void main( String[] args )
{
String input = JOptionPane.showInputDialog("Enter 1 to draw rectangles\n" +"Enter 2 to draw ovals" );
int choice = Integer.parseInt( input );
Shapes panel = new Shapes( choice );
JFrame application = new JFrame();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
application.add( panel );
application.setSize( 300, 300 );
application.setVisible( true );
}
}
اخطاری که کد دوم میده:
init:
deps-jar:
Compiling 1 source file to F:\java\bin\testi\build\classes
F:\java\bin\testi\src\testi\Main.java:10: cannot find symbol
symbol : class Shapes
location: class testi.Main
Shapes panel = new Shapes( choice );
F:\java\bin\testi\src\testi\Main.java:10: cannot find symbol
symbol : class Shapes
location: class testi.Main
Shapes panel = new Shapes( choice );
2 errors
BUILD FAILED (total time: 0 seconds)
مشکلی که من دارم اینه که هر وقتی که در کدهام از new استفاده کردم اسکریپتم خطا میده:
الان در کد بالا به این خط ارور میده:
Shapes panel = new Shapes( choice );
مشکل از کجاست؟
متشکرم.
spiderman200700
پنج شنبه 16 شهریور 1391, 12:40 عصر
سلام.
باید دید Shapes رو چطوری نوشتی
ravand
پنج شنبه 16 شهریور 1391, 12:43 عصر
متشکرم.
ولی کل کدهای من همینه و به غیر از این کدها چیز دیگه ای ننوشتم:
package testi;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Main
{
public static void main( String[] args )
{
String input = JOptionPane.showInputDialog("Enter 1 to draw rectangles\n" +"Enter 2 to draw ovals" );
int choice = Integer.parseInt( input );
Shapes panel = new Shapes( choice );
JFrame application = new JFrame();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
application.add( panel );
application.setSize( 300, 300 );
application.setVisible( true );
}
}
ravand
پنج شنبه 16 شهریور 1391, 12:44 عصر
دقیقا این new کارش چیه؟
میشه یه مثال ازش برام به همین شکل بنویسید؟
متشکرم
hadi0x7c7
پنج شنبه 16 شهریور 1391, 13:12 عصر
shape در واقع یه Interface هستش و شما نمتونید از اون شیء بسازسد. باید از کلاس هایی که اونو implement میکنن مثل Rectangle , Polygon,Line2D و ... http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Shape.html
استفاده کنی.
اینم شاید بدرد بخوره. http://www.codemiles.com/java-examples/draw-oval-in-java-t2826.html
ravand
پنج شنبه 16 شهریور 1391, 16:52 عصر
احساس میکنم این موضوع ربطی به اون چیزی که شما میگید نداره.
چون من بدون اینکه کتابخانه ی Polygon رو به برنامه اضافه کنم کدهای این ادرس رو تست کردم و کار کرد ولی کدهای خودم کار نمیکنه.
http://www.codemiles.com/java-examples/draw-oval-in-java-t2826.html
spiderman200700
جمعه 17 شهریور 1391, 02:31 صبح
shape در واقع یه Interface هستش و شما نمتونید از اون شیء بسازسد. باید از کلاس هایی که اونو implement میکنن مثل Rectangle , Polygon,Line2D و ... http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Shape.html
استفاده کنی.
اینم شاید بدرد بخوره. http://www.codemiles.com/java-examples/draw-oval-in-java-t2826.html
ایشون از کلاس Shapes آبجکت ساختن، نه از shape
جناب ravand عزیز، با new میایم از یه کلاس که داخل پروژمون وجود داره آبجکت (شی یا همون نمونه ی واقعیه کلاس) میسازیم.
یعنی وقتی شما کلاس Shapes رو new کردی ، به این معناست که از کلاس Shapes آبجکت ساختی. این یعنی کلاس Shapes باید توی پروژت وجود داشته باشه.
ravand
جمعه 17 شهریور 1391, 06:54 صبح
متشکرم . من این مطلب رو توی کتاب Java, How to Program خوندم ولی نمیدونم چرا کلاش Shapes رو نذاشته.
ravand
جمعه 17 شهریور 1391, 09:11 صبح
فهمیدم که با new چه کاری رو میشه انجام داد:
با این روش میشه فایلی رو فراخوانی کرد . مثال زیر:
اول فایلی با نام main.java ایجاد میکنیم:
package testi;
import java.awt.FlowLayout;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.ListSelectionModel;
public class Main extends JFrame
{
private JList colorJList; // list to display colors
private static final String[] colorNames = { "Black", "Blue", "Cyan",
"Dark Gray", "Gray", "Green", "Light Gray", "Magenta",
"Orange", "Pink", "Red", "White", "Yellow" };
private static final Color[] colors = { Color.BLACK, Color.BLUE,
Color.CYAN, Color.DARK_GRAY, Color.GRAY, Color.GREEN,
Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE, Color.PINK,
Color.RED, Color.WHITE, Color.YELLOW };
public Main()
{
super( "List Test" );
setLayout( new FlowLayout() );
colorJList = new JList( colorNames );
colorJList.setVisibleRowCount( 5 );
colorJList.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
add( new JScrollPane( colorJList ) );
colorJList.addListSelectionListener(
new ListSelectionListener()
{
public void valueChanged( ListSelectionEvent event )
{
getContentPane().setBackground(
colors[colorJList.getSelectedIndex()] );
}
}
);
}
}
بعد فایلی با نام ButtonTest :
package testi;
import javax.swing.JFrame;
public class ButtonTest
{
public static void main( String[] args )
{
Main Main = new Main();
Main.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
Main.setSize( 275, 110 );
Main.setVisible( true );
}
}
spiderman200700
جمعه 17 شهریور 1391, 12:38 عصر
آره درسته.
بذار یه مثال ملموس تر واست بزنم.
یه کارخانه ی ماشین سازی رو فرض کن. این کار کاخانه وقتی میخواد یه ماشین جدید تولید کنه، میاد اول امکان سنجی ،تحلیل ، بررسی نیاز مشتری و ... رو انجام میده و میاد ماشین رو در غالب یه نقشه پیاده سازی میکنه. یعنی تمام کارایی رو که قراره انجام بده روی این نقشه میاره. تمام کارها. بعدش میاد این نقشه رو میده به قسمت تولید تا از روی این نقشه تولید ماشین رو انجام بدن و یه نمونه ی واقعی از ماشین رو از روی نقشه بسازن.
خب، توی برنامه نویسی کلاس ها حکم نقشه ی تولید ماشین رو دارن. بعد از این که کلاس یا همون نقشه رو تولید کردی میای نقشه رو میدی به قسمت تولید تا واست شی یا نمونه واقعی تولید کنه. کلمه ی کلیدی new در اینجا کار قسمت تولید رو انجام میده یا بهتر بگم ، کار درخواست به قسمت تولید رو انجام میده و از کلاس، واست نمونه ی واقعی یا همون object رو میسازه.
بدیهیه که قسمت تولید میتونه از روی نقشه ، چندین نمونه ی واقعی بسازه. همونطور که ما میتونیم از یه کلاس چندین object بسازیم.
javaphantom
جمعه 17 شهریور 1391, 13:07 عصر
سلام
کدهای منو ببینید:
package testi;
import java.util.Scanner;
public class Main
{
public static void main( String[] args )
{
GradeBook Main = new GradeBook("CS101 Introduction to Java Programming" );
myGradeBook.displayMessage();
myGradeBook.inputGrades();
myGradeBook.displayGradeReport();
}
}
اینم کد بعدی:
package testi;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Main
{
public static void main( String[] args )
{
String input = JOptionPane.showInputDialog("Enter 1 to draw rectangles\n" +"Enter 2 to draw ovals" );
int choice = Integer.parseInt( input );
Shapes panel = new Shapes( choice );
JFrame application = new JFrame();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
application.add( panel );
application.setSize( 300, 300 );
application.setVisible( true );
}
}
اخطاری که کد دوم میده:
init:
deps-jar:
Compiling 1 source file to F:\java\bin\testi\build\classes
F:\java\bin\testi\src\testi\Main.java:10: cannot find symbol
symbol : class Shapes
location: class testi.Main
Shapes panel = new Shapes( choice );
F:\java\bin\testi\src\testi\Main.java:10: cannot find symbol
symbol : class Shapes
location: class testi.Main
Shapes panel = new Shapes( choice );
2 errors
BUILD FAILED (total time: 0 seconds)
مشکلی که من دارم اینه که هر وقتی که در کدهام از new استفاده کردم اسکریپتم خطا میده:
الان در کد بالا به این خط ارور میده:
Shapes panel = new Shapes( choice );
مشکل از کجاست؟
متشکرم.
کلاس Shapes رو از کجا آوردی ؟
javaphantom
جمعه 17 شهریور 1391, 13:09 عصر
متشکرم.
ولی کل کدهای من همینه و به غیر از این کدها چیز دیگه ای ننوشتم:
package testi;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Main
{
public static void main( String[] args )
{
String input = JOptionPane.showInputDialog("Enter 1 to draw rectangles\n" +"Enter 2 to draw ovals" );
int choice = Integer.parseInt( input );
Shapes panel = new Shapes( choice );
JFrame application = new JFrame();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
application.add( panel );
application.setSize( 300, 300 );
application.setVisible( true );
}
}
باور می کنم که کل کدها همییه ولی سوال همچنان باقیست کلاس Shapes رو کدوم package or API هست.؟
اگر هست چرا اون بالا import نشده.
اصلا باید compile time شما به error بخوری
javaphantom
جمعه 17 شهریور 1391, 13:11 عصر
shape در واقع یه Interface هستش و شما نمتونید از اون شیء بسازسد. باید از کلاس هایی که اونو implement میکنن مثل Rectangle , Polygon,Line2D و ... http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Shape.html
استفاده کنی.
اینم شاید بدرد بخوره. http://www.codemiles.com/java-examples/draw-oval-in-java-t2826.html
چرا صورت مسئله رو پاک می کنی. توی کد ایشون یک کلاسی با نام Shapes هست نه Shape و مشکل اینکه اسم کلاس هست ولی خود کلاس نیست.
javaphantom
جمعه 17 شهریور 1391, 13:12 عصر
احساس میکنم این موضوع ربطی به اون چیزی که شما میگید نداره.
چون من بدون اینکه کتابخانه ی Polygon رو به برنامه اضافه کنم کدهای این ادرس رو تست کردم و کار کرد ولی کدهای خودم کار نمیکنه.
http://www.codemiles.com/java-examples/draw-oval-in-java-t2826.html
کاملا حق داری ۵۰۰۰ کلاس دیگه هم اضافه کنی بازم مشکل داری چون کلاسی به نام کلاس Shapes وجود ندارد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.