public class Test10
{
public static void main( String[] args )
{
Thing2 first = new Thing2( 1 );
Thing2 second = new Thing2( 2 );
Thing2 temp = second;
second = first;
first = temp;
System.out.println( first.toString() );
System.out.println( second.toString() );
Thing2 third = new Thing2( 3 );
Thing2 fourth = new Thing2( 4 );
third.swap1( fourth );
System.out.println( third.toString() );
System.out.println( fourth.toString() );
second.setCount( fourth.getCount() );
third = first;
System.out.println( third == first );
System.out.println( fourth == second );
System.out.println( first.toString().equals( third.toString() ) );
System.out.println( second.toString().equals( fourth.toString() ) );
System.out.println( first.toString() );
System.out.println( second.toString() );
System.out.println( third.toString() );
System.out.println( fourth.toString() );
first = new Thing2( 1 );
second = new Thing2( 2 );
first.swap2( second );
System.out.println( first.toString() );
System.out.println( second.toString() );
}
}
class Thing2
{
private int count;
public Thing2( int count )
{
this.count = count;
}
public int getCount()
{
return this.count;
}
public void setCount( int count )
{
this.count = count;
}
public String toString()
{
String s = " ";
switch( this.count )
{
case 1:
s = s + "first ";
case 2:
s = s + "mid ";
break;
case 3:
s = s + "last ";
break;
default:
s = s + "rest ";
break;
}
return s;
}
public void swap1( Thing2 t2 )
{
int temp;
temp = this.getCount();
this.setCount( t2.getCount() );
t2.setCount( temp );
}
public void swap2( Thing2 t2 )
{
Thing2 temp;
Thing2 t1 = this;
temp = t1;
t1 = t2;
t2 = temp;
}
}
嘿伙计们,这是我的一个班级。有两个类(如上所列),Thing2和Test10。这是输出,但我不明白如何获得输出(即什么指向什么以及什么是一切都被解决的顺序?)。谢谢!给定Thing2类的以下定义,输出是什么 Java应用程序Test10?
mid
first mid
rest
last
true
false
true
true
mid
last
mid
last
first mid
mid
答案 0 :(得分:2)
一个技巧是switch语句中的case 1
没有break语句,因此代码继续执行case 2
指令并为Thing创建字符串“first mid”而不是“first” (1)
可能有助于在您的打印语句中添加注释,例如
System.out.println("First is " + first.toString());
System.out.println("third == first?" + (first == third));
如果您这样做,请添加更多打印报表。
将每个变量视为一个大箭头。
声明a = new Thing(2)
使用“mid”这个词制作一个东西并指向a
箭头。
声明a = b
采用b
箭头所看到的任何内容,并将a
箭头指向同一物体。
答案 1 :(得分:1)
3条建议:
交换机中的案例1不包含中断。因此,当满足案例1时,控制将流向案例2,甚至将执行案例2.
使用一些打印语句,以便您知道在控制台上打印的内容。
您的问题不准确。你有代码。你有输出。你说你不明白如何获得输出。可能是您需要阅读代码并了解控件如何在Java程序中流动。如果你找到一些特定的控制流程结构,那么我们可以提供帮助。根据你所说的,我们不知道你面临的问题。然后,我会建议你“分而治之”策略。注释掉所有内容并执行小的逻辑代码片段,当您理解第一个小部分,取消注释几行,运行并查看输出时,您可以将相关内容与正在打印的内容联系起来。示例:首先处理一个交换函数。