我想创建一个GradeBook类,然后为每个学生创建一个对象,并将它们的名称和courseName和Grade保存在一个向量中,然后最后将它们全部打印出来.这是我的代码:
public static void main(String [] args)
{
Vector<GradeBook> gVec = new Vector<GradeBook>() ;
Scanner sc = new Scanner (System.in) ;
String sName = sc.nextLine();
String cName = sc.next();
int grade = sc.nextInt() ;
while(!sName.equals("end"))
{
GradeBook st = new GradeBook() ;
st.setCouseInfo(sName, cName, grade) ;
gVec.add(st) ;
sName = sc.nextLine();
cName = sc.next();
grade = sc.nextInt() ;
}
}
Run Code Online (Sandbox Code Playgroud)
prgoram获取名称,检查它是否"结束",然后获取courseName和等级,将它们设置为GradeBook字段,即studentName,courseName和courseGrade,然后将它们添加到GradeBook的向量中.
但是在程序的最后我打印结果时遇到了问题,它不能像我在C++中那样做,就像:
for ( int i=0;i<gVec.size();i++)
{
System.out.println(gVec[i].studentName);
System.out.println(gVec[i].courseName);
System.out.println(gVec[i].courseGrade);
}
Run Code Online (Sandbox Code Playgroud)
有人可以给我一个关于如何在java中使用向量的提示吗?谢谢!
我正在尝试将一个对象添加到向量中,当我使用下面的代码粘贴时,我得到的错误是"令牌上的语法错误,错位的构造(s)".和"令牌上的语法错误"gamePaddle",在此令牌之后预期的VariableDecloratorID." 我到处寻找,找不到我做错了什么,他们都告诉我像这样构建Vector.错误发生在启动ListOfGameObjects.add的行上(...
class GameWorld {
/**
* Code that instantiate, hold, and manipulate GameOobjects and related game state data.
* @author Tyler Thomas
*
*/
Paddle gamePaddle = new Paddle();
Ball gameBall = new Ball();
Edge topEdge = new Edge(50, 150);
Edge bottomEdge = new Edge(50, 0);
Edge leftEdge = new Edge(0, 75);
Edge rightEdge = new Edge(100, 75);
Vector<GameObject> ListOfGameObjects = new Vector<GameObject>();
ListOfGameObjects.add(gamePaddle);
}
Run Code Online (Sandbox Code Playgroud) 我希望能够将文本中的特定单词添加到矢量中.现在的问题是我想避免添加重复的字符串.我想到的第一件事是在添加它们之前比较所有字符串,随着条目数量的增加,这成为非常低效的解决方案.我能想到的唯一"时间效率"解决方案是unordered_multimap包含在C++ 11中的容器.我找不到Java的等价物.我想在地图上添加字符串,最后只是将所有条目复制到向量中,这样会比第一个解决方案更有效.现在我想知道是否有任何Java库可以满足我的需求?如果没有,我在Java中找不到任何C++ unordered_multimap容器,我找不到?
我正在为最后几对夫妇编程,但今天我看到了一个新的东西,我在网上搜索但找不到完美的答案.有一个代码说
for(String string : mCha) // line 1
{
// loop working
}
Run Code Online (Sandbox Code Playgroud)
我想问一下1号线是什么意思?正如我所研究的那样,for循环中应该有3个参数,如果我们不想给出,那么应该遵循以下方法
for(;;)
{
}
Run Code Online (Sandbox Code Playgroud)
请解释我,因为我对这个语法完全陌生,我在网上搜索但找不到任何有用的东西.
Vector<Vector<Integer>> wavesInformation;
for(Vector<Integer> waveInformation : wavesInformation) {
for(Integer enemyIndex : waveInformation) {
}
}
Run Code Online (Sandbox Code Playgroud)
给出运行时错误:
Exception in thread "LWJGL Application" java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.Integer
Run Code Online (Sandbox Code Playgroud)
在for(Integer enemyIndex : waveInformation) {行.
这很混乱,因为没有使用浮动.
写作
for(Float enemyIndex : waveInformation) {
Run Code Online (Sandbox Code Playgroud)
给出编译错误:
Type mismatch: cannot convert from element type Integer to Float
Run Code Online (Sandbox Code Playgroud)
编辑:
我wavesInformation在调试模式下查找,发现存储的数字实际上是浮点数(0.0).
EDIT2:
嗯,这真的很奇怪.
出于实验目的,我将for循环更改为:
for(int i = 0 ; i < waveInformation.size() ; i++) {
Run Code Online (Sandbox Code Playgroud)
我试图将值waveInformation赋给变量,如下所示:
float x = waveInformation.get(i);
Run Code Online (Sandbox Code Playgroud)
和: …
根据我的理解,如果一个线程已经在访问它,Vector 应该阻止其他线程的整个集合。我在尝试着
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import java.util.concurrent.CopyOnWriteArrayList;
public class MyTest1{
// static ArrayList<String> l1 = new ArrayList<>(Arrays.asList("A", "B", "C"));
static Vector<String> l1 = new Vector<>(Arrays.asList("A", "B", "C"));
// static List<String> l1 = Collections.synchronizedList(Arrays.asList("A", "B", "C"));
public static void main(String[] args) {
Thread t1 = new Thread(new MyThread1());
Thread t2 = new Thread(new MyThread2());
t1.start();
t2.start();
System.out.println(Thread.currentThread() + "adding X " + l1.add("X"));
System.out.println(Thread.currentThread() + "adding Y " + l1.add("Y"));
System.out.println(Thread.currentThread() + …Run Code Online (Sandbox Code Playgroud) 只是希望我能找人告诉我我这样做是对的,因为我之前从未写过这样的东西.所以我必须编写一个名为ProcessQueue的类,它是Vector的子类,以及一个定义空队列的构造函数.Vector也将保存"对象"类型的项目.所以这里......
public class ProcessQueue<Vector>{
ProcessQueue(){}
}
Run Code Online (Sandbox Code Playgroud) 由于许多误解,我从头开始重新阐述了这个问题。提问的初衷没有改变。许多评论仍然引用旧的问题文本。
有关文档volatile指出,它确保其他线程以一致的方式看到内存更新。然而,volatile很少使用。
据我所知,synchronized块的目的是使线程不同时执行这些关键部分。是否也会synchronized像其他线程一样导致一致的内存更新volatile?
java ×9
vector ×4
foreach ×2
arrays ×1
class ×1
collections ×1
concurrency ×1
constructor ×1
containers ×1
for-loop ×1
json ×1
libgdx ×1
map ×1
string ×1
volatile ×1