用Java命名一个新实例
我试图创建一个程序,通过将三角形的边存储在下面的类中来创建三角形:用Java命名一个新实例,java,Java,我试图创建一个程序,通过将三角形的边存储在下面的类中来创建三角形: class Triangle { private int[] sides; public Triangle(int x, int y, int z) { sides = new int[] {x,y,z}; Arrays.sort(sides); } @Override public boolean equals(Object o) { retu
class Triangle {
private int[] sides;
public Triangle(int x, int y, int z) {
sides = new int[] {x,y,z};
Arrays.sort(sides);
}
@Override public boolean equals(Object o) {
return o instanceof Triangle && Arrays.equals(sides, ((Triangle) o).sides);
}
@Override public int hashCode() {
return Arrays.hashCode(sides);
}
@Override public String toString() {
return Arrays.toString(sides);
}
}
问题是我不知道如何从for
循环创建这些三角形的新实例。例如,我通过For循环比较三个数字的GCD,然后我想在集合中添加一个新的三角形(已讨论)。我相信我知道如何创建这个类的新实例,因为在循环过程中,我无法创建triangle类的唯一实例
有什么方法可以做到这一点吗?试试这个:
Set<Triangle> myTriangles = new LinkedHashSet<Triangle>();
for (something here) {
myTriangles.add(new Triangle(a, b, c));
}
Set myTriangles=newlinkedhashset();
为了(这里的东西){
添加(新三角形(a,b,c));
}
该集合将自动避免重复。请尝试以下操作:
Set<Triangle> myTriangles = new LinkedHashSet<Triangle>();
for (something here) {
myTriangles.add(new Triangle(a, b, c));
}
Set myTriangles=newlinkedhashset();
为了(这里的东西){
添加(新三角形(a,b,c));
}
集合将自动避免重复。我认为您在构造函数中初始化对象时犯了一个小错误。 不仅仅是一个错误,我会说是设计问题 每个三角形都有三条边,你为什么不说:
public Triangle(int x, int y, int z) {
sides = new int[3];
sides[0] = x;
sides[1] = y;
sides[2] = z;
}
然后,当您创建三角形类的对象时,只需将参数传递给它。如果要在循环中执行,可以执行以下操作:
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
System.out.print("How many triangles do you want?")
int noOfTriangles = sc.nextInt();
Triangle[] triangles = new Triangle[noOfTriangles];
for(int i = 0; i < triangles.length; i++) {
System.out.print("Creating triangle " + (i+1))
System.out.print("Enter a value for side X")
int x =sc.nextInt();
System.out.print("Enter a value for side Y")
int y =sc.nextInt();
System.out.print("Enter a value for side Z")
int z =sc.nextInt();
triangles[i] = new Triangle(x,y,z);
}
}
publicstaticvoidmain(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.print(“您想要多少个三角形?”)
int noOfTriangles=sc.nextInt();
三角形[]三角形=新三角形[noOfTriangles];
对于(int i=0;i
现在,您有了一个三角形数组,其中所有对象都已初始化并设置了值。我认为您在构造函数中初始化对象的方式犯了一个小错误。 不仅仅是一个错误,我会说是设计问题 每个三角形都有三条边,你为什么不说:
public Triangle(int x, int y, int z) {
sides = new int[3];
sides[0] = x;
sides[1] = y;
sides[2] = z;
}
然后,当您创建三角形类的对象时,只需将参数传递给它。如果要在循环中执行,可以执行以下操作:
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
System.out.print("How many triangles do you want?")
int noOfTriangles = sc.nextInt();
Triangle[] triangles = new Triangle[noOfTriangles];
for(int i = 0; i < triangles.length; i++) {
System.out.print("Creating triangle " + (i+1))
System.out.print("Enter a value for side X")
int x =sc.nextInt();
System.out.print("Enter a value for side Y")
int y =sc.nextInt();
System.out.print("Enter a value for side Z")
int z =sc.nextInt();
triangles[i] = new Triangle(x,y,z);
}
}
publicstaticvoidmain(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.print(“您想要多少个三角形?”)
int noOfTriangles=sc.nextInt();
三角形[]三角形=新三角形[noOfTriangles];
对于(int i=0;i
现在你有了一个三角形数组,所有对象都已初始化并设置了值。我读了另一篇文章并添加了。 也许你应该看看那里。它生成三角形和所有东西。 无论如何,这不是一个“命名约定”问题,如果您将问题改为“如何在java中创建实例”,可能会得到正确的反馈 我在这里写的完整代码(如果你不想点击链接)也在这里,应该会填补其他人留给你的空白:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Triangle
{
private int[]sides;
public Triangle( int x, int y, int z)
{
sides = new int[]{x,y,z};
Arrays.sort( sides );
}
public Triangle( String ... args )
{
this( Integer.parseInt( args[0].trim() ), Integer.parseInt( args[1].trim() ), Integer.parseInt( args[2].trim() ));
}
@Override
public boolean equals( Object o )
{
if ( this == o ) return true;
if ( o == null || getClass() != o.getClass() ) return false;
Triangle triangle = ( Triangle ) o;
if ( !Arrays.equals( sides, triangle.sides ) ) return false;
return true;
}
@Override
public int hashCode()
{
return sides != null ? Arrays.hashCode( sides ) : 0;
}
@Override
public String toString()
{
return "Triangle{" +
"sides=" + Arrays.toString( sides ) +
'}';
}
public static void main( String[] args ) throws IOException
{
String[] input = new String[]{ "1,2,1" , "1,1,2", "1,2,3","1,3,1","1,1,1","1,3,3","1,1,3"};
Set<Triangle> triangles = new HashSet<Triangle>( );
for ( String s : input )
{
triangles.add( new Triangle( s.split( "," ) ) );
}
System.out.println( "triangles = " + triangles );
}
}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.array;
导入java.util.HashSet;
导入java.util.Set;
公共阶级三角
{
私人内部[]方;
公共三角形(整数x,整数y,整数z)
{
边=新的int[]{x,y,z};
数组。排序(边);
}
公共三角形(字符串…参数)
{
这(Integer.parseInt(args[0].trim())、Integer.parseInt(args[1].trim())、Integer.parseInt(args[2].trim());
}
@凌驾
公共布尔等于(对象o)
{
如果(this==o)返回true;
如果(o==null | | getClass()!=o.getClass())返回false;
三角形=(三角形)o;
如果(!array.equals(sides,triangle.sides))返回false;
返回true;
}
@凌驾
公共int hashCode()
{
返回边!=null?数组。哈希代码(边):0;
}
@凌驾
公共字符串toString()
{
返回“三角形{”+
“sides=“+Arrays.toString(sides)+
'}';
}
公共静态void main(字符串[]args)引发IOException
{
字符串[]输入=新字符串[]{“1,2,1”、“1,1,2”、“1,2,3”、“1,3,1”、“1,1,1”、“1,3,3”、“1,1,3”};
Set triangles=newhashset();
for(字符串s:输入)
{
三角形。添加(新三角形(s.split(“,”));
}
System.out.println(“triangles=“+triangles”);
}
}
我读了另一篇文章并添加了。
也许你应该看看那里。它生成三角形和所有东西。
无论如何,这不是一个“命名约定”问题,如果您将问题改为“如何在java中创建实例”,可能会得到正确的反馈
我在这里写的完整代码(如果你不想点击链接)也在这里,应该会填补其他人留给你的空白:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Triangle
{
private int[]sides;
public Triangle( int x, int y, int z)
{
sides = new int[]{x,y,z};
Arrays.sort( sides );
}
public Triangle( String ... args )
{
this( Integer.parseInt( args[0].trim() ), Integer.parseInt( args[1].trim() ), Integer.parseInt( args[2].trim() ));
}
@Override
public boolean equals( Object o )
{
if ( this == o ) return true;
if ( o == null || getClass() != o.getClass() ) return false;
Triangle triangle = ( Triangle ) o;
if ( !Arrays.equals( sides, triangle.sides ) ) return false;
return true;
}
@Override
public int hashCode()
{
return sides != null ? Arrays.hashCode( sides ) : 0;
}
@Override
public String toString()
{
return "Triangle{" +
"sides=" + Arrays.toString( sides ) +
'}';
}
public static void main( String[] args ) throws IOException
{
String[] input = new String[]{ "1,2,1" , "1,1,2", "1,2,3","1,3,1","1,1,1","1,3,3","1,1,3"};
Set<Triangle> triangles = new HashSet<Triangle>( );
for ( String s : input )
{
triangles.add( new Triangle( s.split( "," ) ) );
}
System.out.println( "triangles = " + triangles );
}
}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.array;
导入java.util.HashSet;
导入java.util.Set;
公共阶级三角
{
私人内部[]方;
公共三角形(整数x,整数y,整数z)
{
边=新的int[]{x,y,z};